平时没用到,今天突然说要做个用webview的js来调用Android里的方法,所以整理下大概的内容来共同学习,方法可以直接使用了,如果写的不好请指出
Android调用js方法
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.e("debug", "uuid=加载完成");
String call = "javascript:getFingerprint()";
mWebView.loadUrl(call);
}
});
注:getFingerprint()为js中的一个方法
我这里调用的是本地的html所以用的加载地址是loadUrl("file:///android_asset/test.html");
打开本地sd卡内的test.html文件loadUrl("content://com.android.htmlfileprovider/sdcard/test.html")
指定的URLloadUrl(" http://baidu.com");
在我调试的时候一直在报错
11-05 14:30:09.375: V/WebViewInputDispatcher(21783): blockWebkitDraw lockedfalse
11-05 14:35:32.935: D/webview(23148): blockWebkitViewMessage= false
找了下资料说是API17以上需要添加注释
webView调用JS需要引用 @JavascriptInterface
所以我在showResult()的方法前引用了一下问题解决
代码中的webView.addJavascriptInterface(new test(getApplicationContext()), "android");这句话中的Android相当于test()方法的对象,js通过他来找到对应的方法如下:
javascript:android.showResult(str)
首先在assets下创建一个html文件内容如下