前几天项目中遇到了整个问题,在android2.2上跑,ok,木有问题。拿到4.4上测试,在webview中没有反应。
这是因为在android4.2.X之后google公司对webview进行了一次漏洞修补。只允许js调用java中用@JavascriptInterface注解了的方法。看网上的解决方法,发现说的不甚明了,这里我还是把这个解决终极总结给写出来吧,后来人少走弯路吧。
相信猿友们已经搜索过了很多这方面的解决办法:
正如上所说,需要在你js调用的方法前加上@JavascriptInterface 的注解。但是有部分人的代码会报错说找不到类,需要创建类。然后大概会像我一样去搜这个注解的类支持库。呵呵呵。。。开始走弯路了。
其实在android4.2中已然有了这个类。我们只需要将properties中的编译sdk换成4.2的17即可。如果你电脑上没有装17的sdk,恩,这个问题么。自己解决!
貌似没有代码就没有说服力哇,象征性加入一段代码(然并卵):
class Ccl{
Context context;
@SuppressLint("JavascriptInterface")
public Ccl(Context context){
this.context = context;
}
@JavascriptInterface
public void showMap(String jingdu,String weidu){
judgeInstall(jingdu,weidu);
}
}
javascript:ccl.showMap('\"+jingdu+\"','\"+weidu+\"');\"
ok!