在Android WebView中處理JavaScript交互非常簡單。你需要遵循以下幾個步驟:
在WebView中啟用JavaScript支持非常重要,因為它允許WebView執行JavaScript代碼。要啟用JavaScript,請在你的Activity或Fragment中調用WebView
的getSettings()
方法并設置JavaScriptEnabled
屬性為true
。
WebView webView = findViewById(R.id.webview);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
為了讓Java代碼與JavaScript代碼進行交互,你需要在WebView中定義一個或多個JavaScript接口。這些接口充當JavaScript和Java之間的橋梁。例如,如果你想讓JavaScript調用一個名為MyJavaScriptInterface
的Java方法,你可以這樣定義它:
public class MyJavaScriptInterface {
private TextView textView;
public MyJavaScriptInterface(TextView textView) {
this.textView = textView;
}
@JavascriptInterface
public void processMessage(String message) {
textView.setText(message);
}
}
注意,每個需要被JavaScript調用的方法都必須使用@JavascriptInterface
注解進行修飾。
將定義好的JavaScript接口添加到WebView中,這樣JavaScript代碼就可以調用這些方法了。
TextView textView = findViewById(R.id.textView);
webView.addJavascriptInterface(new MyJavaScriptInterface(textView), "Android");
這里我們將MyJavaScriptInterface
實例添加到WebView中,并命名為"Android"。這使得JavaScript代碼可以使用Android
對象來訪問MyJavaScriptInterface
的方法。
現在你可以加載包含JavaScript的網頁了。在WebView中加載URL時,JavaScript將被執行。
webView.loadUrl("https://example.com");
當JavaScript代碼調用已定義的Java方法時,你可以在相應的Java方法中處理回調。例如,在上面的示例中,當JavaScript調用processMessage
方法時,我們可以更新TextView的內容。
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
// 頁面加載完成后執行JavaScript代碼
view.evaluateJavascript("(function() { " +
"window.Android.processMessage('Hello from JavaScript!');" +
"})()", null);
}
});
在這個例子中,我們在onPageFinished
方法中使用evaluateJavascript
方法執行JavaScript代碼。這個JavaScript代碼調用我們定義的processMessage
方法,并傳遞一條消息。
現在你已經了解了如何在Android WebView中處理JavaScript交互。你可以根據需要擴展這些示例,以適應你的具體需求。