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进行校验和过滤,只允许执行可信的接口方法。