Android 2.3 WebView AddJavascriptInterface解决办法
2013-09-24 14:32
501 查看
如果你也遇到跟我一样的问题,那么你比我幸运,因为你来到了这里。
至于为什么WebView AddJavascriptInterface在Android 2.3的无法工作,这个无从深究。Google也没有去修复这个问题(当然其他版本不存在这个问题)。
接下来,我们来探讨下解决办法:
1.检测是否支持AddJavascriptInterface
在onCreate方法中,检测是否支持AddJavascriptInterface
2.在自定义的webview里,构造一个请求。
当然你也可以定义在onPageStarted方法里面,这似乎你的业务需求。
然后webview会执行多一次请求。然后我们可以捕获它,对它进行处理。
3.捕获请求,进行相应处理
当然了,具体的逻辑处理要视乎实际需求来处理,这里只是举个简单的例子。
现在Android 2.3也支持AddJavascriptInterface,祝你好运!
转载:http://blog.rebill.info/archives/handling-android-2-3-webviews-broken-addjavascriptinterface.html
至于为什么WebView AddJavascriptInterface在Android 2.3的无法工作,这个无从深究。Google也没有去修复这个问题(当然其他版本不存在这个问题)。
接下来,我们来探讨下解决办法:
1.检测是否支持AddJavascriptInterface
在onCreate方法中,检测是否支持AddJavascriptInterface
try { if (Build.VERSION.RELEASE.startsWith("2.3")) { jsInterfaceBroken = true; } } catch (Exception e) { } if (!jsInterfaceBroken) { webView.addJavascriptInterface(new JsInterface(), "Android"); }
2.在自定义的webview里,构造一个请求。
@Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); if (jsInterfaceBroken) { String handlerJsUrl = "javascript:function internalFunc(url) {window.location='http://Android:internalFunc:'+url; }; " + "javascript: function android() { this.internalFunc=internalFunc; }; " + "javascript: var Android = new android();"; view.loadUrl(handlerJsUrl); } }
当然你也可以定义在onPageStarted方法里面,这似乎你的业务需求。
然后webview会执行多一次请求。然后我们可以捕获它,对它进行处理。
3.捕获请求,进行相应处理
@Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (jsInterfaceBroken && url.contains("Android:internalFunc")) { String realUrl = url.replace("http://Android:internalFunc:", ""); return true; } return false; }
当然了,具体的逻辑处理要视乎实际需求来处理,这里只是举个简单的例子。
现在Android 2.3也支持AddJavascriptInterface,祝你好运!
转载:http://blog.rebill.info/archives/handling-android-2-3-webviews-broken-addjavascriptinterface.html
相关文章推荐
- WebView在API 17后调addJavascriptInterface方法无效的解决办法
- WebView在API 17后调addJavascriptInterface方法无效的解决办法
- android--WebView使用addJavascriptInterface在sdk 17的问题解决
- android的webView.addJavascriptInterface() 不能生效解决方法
- Android 4.2中对WebView.addJavascriptInterface()的修改
- Android WebView在API17后addJavascriptInterface方法无效
- Android中WebView的addJavascriptInterface混淆方法
- 备忘--android 4.2+ WebView的addJavascriptInterface(), js找不到注入的函数
- android addJavascriptInterface 不能生效 解决办法
- android软件开发之webView.addJavascriptInterface循环渐进【一】
- android软件开发之webView.addJavascriptInterface循环渐进【一】
- 安卓与JS互调之android webview addJavascriptInterface 的方法不能调用
- android软件开发之webView.addJavascriptInterface循环渐进【一】
- android软件开发之webView.addJavascriptInterface循环渐进【二】
- WebView中addJavascriptInterface不起作用解决方法
- Android WebView addJavascriptInterface无效原因
- Android 4.2版本以下使用WebView组件addJavascriptInterface方法存在JS漏洞
- Android 4.2中对WebView.addJavascriptInterface()的修改
- Android 4.2中对WebView.addJavascriptInterface()的修改
- android软件开发之webView.addJavascriptInterface循环渐进【一】