Android瀏覽器可以通過以下方法調(diào)用接口:
示例代碼:
WebView webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JavaScriptInterface(), "AndroidInterface");
// 加載網(wǎng)頁
webView.loadUrl("http://example.com");
// 在JavaScript中調(diào)用接口
webView.evaluateJavascript("javascript:AndroidInterface.methodName()", null);
JavaScriptInterface類是一個Java類,定義了供JavaScript調(diào)用的接口方法。在JavaScript中,可以通過AndroidInterface.methodName()
的方式調(diào)用接口方法。
shouldOverrideUrlLoading()
方法中攔截網(wǎng)頁中的URL,判斷是否需要調(diào)用接口。示例代碼:
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("javascript:")) {
// 解析JavaScript調(diào)用的方法名和參數(shù)
String methodName = getMethodNameFromUrl(url);
String[] args = getArgumentsFromUrl(url);
// 調(diào)用相應(yīng)的接口方法
if (methodName.equals("methodName1")) {
// 調(diào)用方法1
} else if (methodName.equals("methodName2")) {
// 調(diào)用方法2
}
return true; // 表示攔截URL,不加載網(wǎng)頁
}
return false; // 繼續(xù)加載網(wǎng)頁
}
});
在shouldOverrideUrlLoading()
方法中,可以解析URL中的方法名和參數(shù),然后根據(jù)實(shí)際需求調(diào)用相應(yīng)的接口方法。
需要注意的是,為了確保安全性和避免惡意代碼的執(zhí)行,建議在調(diào)用接口之前對URL或JavaScript進(jìn)行校驗(yàn)和過濾,只允許執(zhí)行可信的接口方法。