美文网首页
WebView之WebChromeClient

WebView之WebChromeClient

作者: 小言聊编程 | 来源:发表于2018-09-04 16:52 被阅读0次

WebViewClient:在影响View的事件到来时,会通过WebViewClient中的方法回调通知用户
WebChromeClient:当影响浏览器的事件到来时,就会通过WebChromeClient中的方法回调通知用法。

// 获得所有访问历史项目的列表,用于链接着色。

public void getVisitedHistory(ValueCallback<String[]> callback) {
}

// <video /> 控件在未播放时,会展示为一张海报图,HTML中可通过它的'poster'属性来指定。
// 如果未指定'poster'属性,则通过此方法提供一个默认的海报图。

public Bitmap getDefaultVideoPoster() {
    return null;
}

// 当全屏的视频正在缓冲时,此方法返回一个占位视图(比如旋转的菊花)。

public View getVideoLoadingProgressView() {
    return null;
}

// 接收当前页面的加载进度

public void onProgressChanged(WebView view, int newProgress) {
}

// 接收文档标题

public void onReceivedTitle(WebView view, String title) {
}

// 接收图标(favicon)

public void onReceivedIcon(WebView view, Bitmap icon) {
}

// Android中处理Touch Icon的方案
// http://droidyue.com/blog/2015/01/18/deal-with-touch-icon-in-android/index.html

public void onReceivedTouchIconUrl(WebView view, String url, boolean precomposed) {
}

// 通知应用当前页进入了全屏模式,此时应用必须显示一个包含网页内容的自定义View

public void onShowCustomView(View view, CustomViewCallback callback) {
}

通知应用当前页退出了全屏模式,此时应用必须隐藏之前显示的自定义View

public void onHideCustomView() {
}

// 显示一个alert对话框

public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
    return false;
}

// 显示一个confirm对话框

public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
    return false;
}

// 显示一个prompt对话框

public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
    return false;
}

// 显示一个对话框让用户选择是否离开当前页面

public boolean onJsBeforeUnload(WebView view, String url, String message, JsResult result) {
    return false;
}

// 指定源的网页内容在没有设置权限状态下尝试使用地理位置API。
// 从API24开始,此方法只为安全的源(https)调用,非安全的源会被自动拒绝

public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
}

// 当前一个调用 onGeolocationPermissionsShowPrompt() 取消时,隐藏相关的UI。

>public void onGeolocationPermissionsHidePrompt() {
}

// 通知应用打开新窗口

public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
    return false;
}

// 通知应用关闭窗口

public void onCloseWindow(WebView window) {
}

// 请求获取取焦点

public void onRequestFocus(WebView view) {
}

// 通知应用网页内容申请访问指定资源的权限(该权限未被授权或拒绝)

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public void onPermissionRequest(PermissionRequest request) {
    request.deny();
}

// 通知应用权限的申请被取消,隐藏相关的UI。

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public void onPermissionRequestCanceled(PermissionRequest request) {
}

// 为'<input type="file" />'显示文件选择器,返回false使用默认处理

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {
    return false;
}

// 接收JavaScript控制台消息

public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
    return false;
}

在javascript中使用 alert/confirm/prompt 会弹出对话框,可通过重载 WebChromeClient 的下列方法控制弹框的交互,比如替换系统默认的对话框或屏蔽这些对话框

@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
    // 这里处理交互逻辑
    // result.cancel(); 表示用户取消了操作(点击了取消按钮)
    // result.confirm(); 表示用户确认了操作(点击了确认按钮)
    // ...
    // 返回true表示自已处理,返回false表示由系统处理
    return false; 
} 

@Override
public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
    return false;
} 

@Override
public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
    return false;
}

@Override
public boolean onJsBeforeUnload(WebView view, String url, String message, JsResult result) {
    return false;
}

相关文章

  • WebView之WebChromeClient

    WebViewClient:在影响View的事件到来时,会通过WebViewClient中的方法回调通知用户Web...

  • WebView的一点

    WebView 的 public void setWebChromeClient (WebChromeClient...

  • WebView极简用法

    关键类 WebView WebSettings WebViewClient WebChromeClient Web...

  • webview 总结学习

    知识点 webView设置 WebViewClient与WebChromeClient的区别 js调用java 应...

  • 2020-08-24

    Webview续集 1.WebChromeClient中onReceivedTitle是获取网页标题. 运行结果的...

  • Webview基础知识

    1、Webview的最常用的工具类: WebViewClient类、WebChromeClient类 1.1、We...

  • 2019-10-30

    android webview 支持html5 video 播放视频在自定义的 WebChromeClient 中...

  • Android WebView 文件上传

    webview文件上传需要重写webchromeclient里面的几个方法: 然后在对应的activity里面重写...

  • WebView :优化

    Webview 加载h5视频,需全屏播放时,需要重写WebChromeClient的方法 onShowCusto...

  • Android WebChromeClient 概述

    WebChromeClient主要辅助WebView处理Javascript的交互以及浏览器层面的事件,下面介绍一...

网友评论

      本文标题:WebView之WebChromeClient

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