Android 和JavaScript 中的java方法加 @JavascriptInterface的原因分析:
来源:互联网 发布:跳跃网络ceo吴亚西 编辑:程序博客网 时间:2024/04/26 11:15
代码如下:
//js调用安卓代码 private class JavaScriptinterface { private Context mContext; public JavaScriptinterface(Context c) { this.mContext = c; } //获取消费者id @JavascriptInterface //该注解解决:Uncaught TypeError: Object [object Object] has no method 'onItemClickGo' 该异常方法. public void onItemClickGo(final String proId) {//这个方法名,给给js new Handler().post(new Runnable() { @Override public void run() { Intent intent = new Intent(BrowserActivity.this, CommodityDetailActivity.class); intent.putExtra(CommodityDetailActivity.commodityid, proId); startActivity(intent); } }); } //跳转订单列表 @JavascriptInterface public void onSeeOrder() {//这个方法名,给给js new Handler().post(new Runnable() { @Override public void run() { app.manager.finishActivity(MyOrdersActivity.class); Intent intent = new Intent(BrowserActivity.this, MyOrdersActivity.class); intent.putExtra(MyOrdersActivity.index, 2); startActivity(intent); finish(); } }); }
}原因如下:
1. 不加android4.4版本及之前是没有问题的, 4.4之后就会出现这个错误。
"Uncaught TypeError: Object [object Object] has no method 'onItemClickGo"
2.webview允许JavaScript 控制宿主应用程序,这是个很强大的特性,但同时,在4.2的版本前存在重大安全隐患,因为JavaScript 可以使用反射访问注入webview的java对象的public fields,在一个包含不信任内容的WebView中使用这个方法,会允许攻击者去篡改宿主应用程序,使用宿主应用程序的权限执行java代码。因此4.2以后,任何为JS暴露的接口,都需要加@JavascriptInterface
注解,这样,这个Java对象的fields 将不允许被JS访问
阅读全文
0 0
- Android 和JavaScript 中的java方法加 @JavascriptInterface的原因分析:
- android javascriptinterface proguard解决混淆后不能调用javascript
- Android targetSdkVersion 17 @JavascriptInterface
- Android targetSdkVersion 17 @JavascriptInterface
- Android targetSdkVersion 17 @JavascriptInterface
- 关于JavaScript中的方法是否加括号的问题
- Android ANR产生的原因和分析
- Android WebView中的JavaScript和java代码的交互
- Android中java和javascript方法的互相调用示例
- MYSQL数据表损坏的原因分析和修复方法小结
- MYSQL数据表损坏的原因分析和修复方法小结
- rsa非对称加解密,java服务器端对应android、IOS客户端以及javaScript的加解密
- Android中的onConfigurationChanged方法没有被调用的原因
- JAVA方法中的参数用final来修饰的原因
- java中的方法声明为final的原因
- JAVA方法中的参数用final来修饰的原因
- java方法中的参数用final来修饰的原因
- JAVA方法中的参数用final来修饰的原因
- PHP 如何设置一个严格30分钟过期的SESSION
- String的replaceAll方法中的正则表达式用法
- bzoj4872 [Shoi2017]分手是祝愿 (期望概率DP)
- 读《精通springmvc4》读书笔记
- Qt架构
- Android 和JavaScript 中的java方法加 @JavascriptInterface的原因分析:
- 技术问答整理(3)
- H5 canvas基础入门到捕鱼达人小游戏实现(1)
- Reincarnation
- 复杂性科学
- 11_张孝祥_多线程_线程锁技术
- tar.xz文件的解压和生成
- java使用UDP协议
- 从写项目到部署linux服务器全过程-linux固定IP配置篇