first commit
This commit is contained in:
148
docs/GLOBAL_WEBVIEW_USAGE.md
Normal file
148
docs/GLOBAL_WEBVIEW_USAGE.md
Normal 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`就可以在整个项目中全局访问了。
|
||||
Reference in New Issue
Block a user