码迷,mamicode.com
首页 > Web开发 > 详细

webview

时间:2019-11-16 10:28:36      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:object   dia   native   erp   load   attr   use   xxx   jni   

url加载方式:webView.loadUrl("http://139.196.35.30:8080/OkHttpTest/apppackage/test.html");

webViewClient:

webViewClient主要帮助webView处理各种通知,请求事件

webViewClient常用方法:

onPageStarted() 页面请求加载

onPageFinished() 页面请求完成

shouldOverriedUrlLoading  拦截url

onReceivedError()  404,访问错误时回调:回调的时候可加载错误页面

 

webViewChrome:

webViewChrome主要辅助webView处理 javascript 对话框,网站图标,网站title,加载进度等

webViewChrome常用方法:

onJSAlert webView 不支持js的alter弹框,需要自己监听然后通过dialog弹框

onReceivedTitle()  获取网页标题

onReceivedIcon()  获取网页icon

onProgressChanged() 加载进度回调

 

使用:https://blog.csdn.net/lowprofile_coding/article/details/77928614  onkeydown方法中返回true,防止直接退出webview

<uses-permission android:name="android.permission.INTERNET" />

err_unkonwn_url_scheme:   需要重写shouldoverrideurlloading()

https://blog.csdn.net/CSDN472651883/article/details/78951642

 

 

 

 

 

webkit引擎

webkit由4部分组成:WebKit Embedding API,WebCore,JavaScript Core,Platform API(WebKit Ports)

1.WebCore:渲染  负责对HTML解析,CSS解析,渲染UI,调试信息等部分。

主要从网页的 URL 到构建完 DOM 树,接着 从 DOM 树到构建完 WebKit 的绘图上下文,从绘图上下文到生成最终的UI图像。

2.JavaScriptCore:

操作步骤:

  1. get一个JSContext
  2. 处理结束某个JS调起的方法,如log
  3. 调用JS端执行某个JS方法
  4. 重定义某个JS端的方法

安卓基础核心类:

       JavascriptInterface,javascriptInterface  提供一个JS引擎上的一个接口,和webview一起Android加载H5的重要组成部分

       WebView:

Android Browser 用来主要完成webcode的功能

        webviewclient:主要辅助webview处理各种响应请求事件

       webviewclient.shouldOverrideUrlLoading:拦截所有webview的url跳转,开发者可自定义,其中有两个特别功能供JS交互

  1. WebChromeClient.onConsoleMessage():在web的JS中调用console.log("XXX")方法,Native中回调WebChromeClient.consoleMessage()方法,可以得到web中打印的console
  2. WebChromeClient.onJsPrompt():JS中调window.prompt(message,value),  WebChromeClient.onJsPrompt()就会收到回调信息                                  提示信息
  3. WebChromeClient.onJsAlert():提示警告信息框
  4. WebChromeClient.onJsConfirm():展示确认信息

 

JavascriptInterface:由于之前谷歌webview存在漏洞,因此现在需要声明JavascriptInterface,避免黑客

两个接口::::每个webview对象仅绑定到一个实现

        addJavascriptInterface(Object obj,String interfaceName)

        removeJavascriptInterface(String interfaceName)

       

流程方法步骤:

  1. addJavascript时候只有Browser进程才有权限,否则抛异常
  2. WebViewProvider提供的这两个抽象方法实际上是WebViewFactoryProvider创建出来的具体WebViewChromiumFactoryProvider实现的。
  3. WebViewChromiumFactoryProvider创建WebViewChromium去实现。
  4. WebViewChromium 实现用创建AwBrowserProcess的来执行BrowserStartupController的执行Js的函数,这个函数是个JNI方法,

https://blog.csdn.net/sk719887916/article/details/86552854

 

 

webview

标签:object   dia   native   erp   load   attr   use   xxx   jni   

原文地址:https://www.cnblogs.com/acg88688/p/11870574.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!