# 全局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`就可以在整个项目中全局访问了。
