js 和 安卓互相调用
来源:互联网 发布:ipad好用软件 编辑:程序博客网 时间:2024/05/17 13:11
今天写的是安卓中调用html中的js,如果安卓中和js想要相互调用,首先要代码设置webview能够执行javaScript 默认是不执行的代码如下图
然后像webview注册一个对象onfire ,同样也传递一个JavaScriptCallBack实例给webview,通过window.onfire就可以调用javaStcritpCallBack中的方法。
接下来看JavaScriptCallBack类,该类可以任意实现,下图是我的实现
上面说了 你可以在js中通window.onfire.getPlayType("param")调用 安卓的方法,但是安卓Api17以上应该添加注解,避免无法调用。
因为webview中的js调用安卓中的代码是个很大的特性,但是在安卓4.2以下也就Api17一下,存在着很大的安全隐患,在一个包含不信任内容的webview中使用这个方法,他可以通过反射方法访问注入的对象(JavaScriptCallBack 开头向webview注入的对象)的publicmethods ,这样就可以恶意调用宿主的方法,所以在4.2之后任何暴露给js的方法都要使用注解@javaScriptInterface
那安卓中如果调用webview中的js方法呢, 同样很简单 只需要一句话,看下图代码
有js基础的肯定能够看懂javascript:doPlayType()这点代码因为在html也是同样这么使用调用js方法的
做了上面这么多工作安卓和js的互相调用就没什么问题了,但是最后混淆打包上线肯定会出现问题的,做混淆之后JavaScriptCallBack这个类名,方法名就完全变了,那么js就无法找到安卓中的java 方法,调不起来,只需要在混淆文件中添加几句就好了, 如下图 JavaScriptCallBack是我的一个内部类 改成自己的就好了
- js 和 安卓互相调用
- 安卓开发:WebView中JS和Java方法互相调用
- JS和安卓互相调用以及Scheme协议完成外部链接跳转app指定页面
- JS和安卓互相调用以及Scheme协议完成外部链接跳转app指定页面
- JS和安卓互相调用以及Scheme协议完成外部链接跳转app指定页面
- binbinyang---Android js 与安卓互相调用
- 安卓Java与js的互相调用分析
- silverlight 和js互相调用
- as和js互相调用
- Android 和 js 互相调用
- android和js互相调用
- js调用安卓和ios代码
- js调用ios和安卓方法
- JS调用IOS(WebViewJavascriptBridge)和安卓
- VBS和JS互相调用方法
- Applet和页面JS的互相调用
- Android WebView java和js互相调用
- android js 和java互相调用
- 冒泡排序算法
- iOS开发之银联支付集成
- scala解决八皇后问题
- 如果你的错误是 javax.servlet.UnavailableException: Parsing error processing resource path /WEB-INF/struts-c
- iOS 关于tableView cell的分割线的一些设置
- js 和 安卓互相调用
- 如何介绍你的项目
- 快速排序
- 为AppDelegate分层的面向服务架构的 SOAComponentAppDelegate (AppDelegate 回调分层)
- 小米手机退出app后收不到极光推送消息
- 排序字段不要用varchar类型
- 跟据某天日期获取农历或者节假日信息
- Java流编程实例之九--加密流
- logback异步输出日志