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