美文网首页
Android webview使用

Android webview使用

作者: 三季人 | 来源:发表于2017-09-26 16:46 被阅读21次

webview的创建

为了防止webview内存泄漏,目前对webview内存的管理有两种模式

  1. webview单独运行在一个进程中,在关闭的时候,直接杀掉整个进程即可
    但是,中间涉及到进程间的通讯。

  2. 使用代码new webview(Application),将新建webview放入容器中,在销毁的时候,将容器remove掉webview

android 与js通信

android 与js通信主要有一下几种方式

  1. JavascriptInterface()
    这是android 提供的与js通信的官方api
    webView.addJavascriptInterface(new JavascriptInterface(), “javascriptInterface”);
    android 为js提供一个javaScriptInterface,里面预先写好给js调用的方法,但是在android 4.2一下,存在严重的安全漏洞,需要加上@JavascriptInterface

安全漏洞:主要是因为系统没有对注册java类方法的调用,使得攻击者可以通过反射机制,调用其他任何为注册的java类。

  1. 通过WebViewClient.shouldOverrideUrlLoading()
    这个方法是拦截所有webview的url的跳转,页面可以构造特殊的url,shouldOverrideUrlLoading()拦截格式,进行相应的操作

3.通过WebChromeClient.onConsoleMessage()
js代码中调用console(xxx),android会在onConcoleMessage()中收到打印的消息,判断信息的格式,进行处理

4.WebChromeClient.onJsPrompt()
其实除了WebChromeClient.onJsPrompt(),还有WebChromeClient.onJsAlert()和WebChromeClient.onJsConfirm()。顾名思义,这三个Js给Native代码的回调接口的作用分别是展示提示信息,展示警告信息和展示确认信息。鉴于,alert和confirm在Js的使用率很高,所以JSBridge的解决方案中都倾向于选用onJsPrompt()。

java调用js

  1. webview.loadUrl("javascript: ")
    2.webView.evaluateJavascript(javascript, valueCallback);

第一个方法是同步的,不建议使用,第二个方法只有在android 4.4之上使用,对于低版本需要兼容处理

相关文章

网友评论

      本文标题:Android webview使用

      本文链接:https://www.haomeiwen.com/subject/bunsextx.html