Js与android webview遭遇过的坑

原创 2015年11月20日 13:06:30

Uncaught TypeError: Object [object Object] has no method

可能产生该情况有几种可能

1、安全限制问题

如果只在4.2版本以上的机器出问题,那么就是系统处于安全限制的问题了。Android文档这样说的

Caution: If you’ve set your targetSdkVersion to 17 or higher, you must add the @JavascriptInterface annotation to any method that you want available your web page code (the method must also be public). If you do not provide the annotation, then the method will not accessible by your web page when running on Android 4.2 or higher.

    中文大意为

警告:如果你的程序目标平台是17或者是更高,你必须要在暴露给网页可调用的方法(这个方法必须是公开的)加上@JavascriptInterface注释。如果你不这样做的话,在4.2以以后的平台上,网页无法访问到你的方法。
例:
@JavascriptInterface
public void testMothed(String str) {
}

解决方法

将targetSdkVersion设置成17或更高,引入@JavascriptInterface注释
自己创建一个注释接口名字为@JavascriptInterface,然后将其引入。注意这个接口不能混淆。这种方式不推荐,大概在4.4之后有问题。
注,创建@JavascriptInterface代码

2、代码混淆问题

如果在没有混淆的版本运行正常,在混淆后的版本的代码运行错误,并提示Uncaught TypeError: Object [object Object] has no method,那就是你没有做混淆例外处理。 在混淆文件加入类似这样的代码

-keepattributes *Annotation*
-keepclassmembers class * {
    @android.webkit.JavascriptInterface <methods>;
}

本人测试环境是android5.1 moto x 1085

博文主要参考
http://droidyue.com/blog/2014/09/20/interaction-between-java-and-javascript-in-android/

相关文章推荐

Android Webview和js交互踩坑笔记

在Webview加载完特定在线网址后调用js方法传递一些参数/数据给前端使用. [INFO:CONSOLE(1)] "Uncaught ReferenceError: getData is not d...

Android中WebView与js交互简单Demo

  • 2016年08月16日 12:30
  • 7MB
  • 下载

Android Webview JS互调

  • 2016年07月26日 09:27
  • 944KB
  • 下载

android webview一篇文章全面了解(基本使用,url拦截,js跟java交互)

1.前言最近几年混合应用越来越流行,及一部分功能用原生代码开发,一部分功能用html5实现。那什么时候用原生什么时候用网页呢?很多人第一反应就是经常变化的页面用网页开发,避免经常发包,不全对。其实因为...

Android中WebView的JS交互的几种方式

  • 2016年09月28日 10:08
  • 2.57MB
  • 下载

Android 通过webview和js的交互

  • 2016年11月04日 13:35
  • 98KB
  • 下载

android WebView 和js互调用的使用说明。

android webview是可以调用外部的HTML文件,以及执行JS操作,这个又跟单纯的HTML中JS又有些不相同,...

Android webview和JS交互

  • 2016年02月17日 14:55
  • 7.26MB
  • 下载

Android中webview使用js与java交互

  • 2017年05月11日 18:18
  • 19.46MB
  • 下载

JavaScript与Android的数据交互,js与安卓数据交互WebView

本文思路: 1,webview介绍, 2,android中的书写 3,js中的书写, 4,出现的问题,一定要看完。不然。。。就出错了 说道数据交互,首先要先说...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Js与android webview遭遇过的坑
举报原因:
原因补充:

(最多只允许输入30个字)