first commit

This commit is contained in:
2026-02-16 18:24:19 +08:00
commit c458f3c707
472 changed files with 61558 additions and 0 deletions

View File

@@ -0,0 +1,148 @@
# 全局WebView访问使用说明
## 概述
已将`NewwebviewActivity`中的`x5webview`设置为`public static`,使其可以在项目中的任何地方全局访问。
## 访问方式
### 方式1直接访问静态变量
```java
import com.tagmae.tsgame_erwang.NewwebviewActivity;
import com.tagmae.jsbridge.BridgeWebView;
// 直接访问
BridgeWebView webView = NewwebviewActivity.x5webview;
if (webView != null) {
// 使用webView
webView.loadUrl("javascript:console.log('Hello from external class')");
}
```
### 方式2通过静态方法访问
```java
import com.tagmae.tsgame_erwang.NewwebviewActivity;
import com.tagmae.jsbridge.BridgeWebView;
// 通过静态方法访问
BridgeWebView webView = NewwebviewActivity.getWebView();
if (webView != null) {
// 使用webView
String currentUrl = webView.getUrl();
}
```
### 方式3使用辅助类推荐
```java
import com.tagmae.tsgame_erwang.GlobalWebViewHelper;
import com.tagmae.tsgame_erwang.WebViewScreenshotUtil;
// 检查WebView是否可用
if (GlobalWebViewHelper.isWebViewAvailable()) {
// 执行JavaScript
GlobalWebViewHelper.executeJavaScript("console.log('Hello from helper')");
// 获取当前URL
String url = GlobalWebViewHelper.getCurrentUrl();
// 重新加载
GlobalWebViewHelper.reload();
// 获取Canvas base64数据
GlobalWebViewHelper.getCanvasBase64("myCanvas", new WebViewScreenshotUtil.CanvasToBase64Callback() {
@Override
public void onSuccess(String base64Data) {
// 处理base64数据
Log.d("Canvas", "Got base64: " + base64Data.length() + " chars");
}
@Override
public void onError(String error) {
Log.e("Canvas", "Failed to get base64: " + error);
}
});
}
```
## Canvas截图便捷方法
### 直接从全局WebView获取Canvas数据
```java
import com.tagmae.tsgame_erwang.WebViewScreenshotUtil;
// 获取指定ID的Canvas
WebViewScreenshotUtil.getCanvasBase64FromGlobalWebView("canvasId", new WebViewScreenshotUtil.CanvasToBase64Callback() {
@Override
public void onSuccess(String base64Data) {
// 处理base64数据
}
@Override
public void onError(String error) {
// 处理错误
}
});
// 获取第一个Canvas
WebViewScreenshotUtil.getCanvasBase64FromGlobalWebView(new WebViewScreenshotUtil.CanvasToBase64Callback() {
@Override
public void onSuccess(String base64Data) {
// 处理base64数据
}
@Override
public void onError(String error) {
// 处理错误
}
});
```
## 注意事项
1. **空值检查**:在使用前务必检查`x5webview`是否为null
2. **线程安全**WebView相关操作需要在主线程中执行
3. **生命周期**确保在WebView已经初始化后再使用
4. **内存泄漏**:由于是静态变量,注意在不需要时适当清理
## 使用场景示例
### 在Service中获取Canvas数据
```java
public class MyService extends Service {
public void captureCanvas() {
if (GlobalWebViewHelper.isWebViewAvailable()) {
GlobalWebViewHelper.getCanvasBase64(new WebViewScreenshotUtil.CanvasToBase64Callback() {
@Override
public void onSuccess(String base64Data) {
// 在Service中处理Canvas数据
handleCanvasData(base64Data);
}
@Override
public void onError(String error) {
Log.e("MyService", "Canvas capture failed: " + error);
}
});
}
}
}
```
### 在其他Activity中操作WebView
```java
public class OtherActivity extends Activity {
public void interactWithWebView() {
BridgeWebView webView = NewwebviewActivity.getWebView();
if (webView != null) {
// 执行JavaScript
webView.loadUrl("javascript:myFunction()");
// 获取URL
String url = webView.getUrl();
Log.d("OtherActivity", "Current URL: " + url);
}
}
}
```
这样,`x5webview`就可以在整个项目中全局访问了。