zoukankan      html  css  js  c++  java
  • webview

    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

  • 相关阅读:
    第十八次发博不知道用什么标题好
    第十七次发博不知道用什么标题好
    第十六次发博不知道用什么标题好
    第十五次发博不知道用什么标题好
    第十四次发博不知道用什么标题好
    第十三次发博不知道用什么标题好
    第十二次发博不知道用什么标题好
    NEC学习 ---- 布局 -两列, 左侧定宽,右侧自适应
    jQuery 利用 $.getJson() 实现跨域
    HTML: 字符實體
  • 原文地址:https://www.cnblogs.com/acg88688/p/11870574.html
Copyright © 2011-2022 走看看