webView系列(四)----WebChromeClient

private WebChromeClient mWebChromeClient = new WebChromeClient() {
    /**
     * <video /> 控件在未播放时,会展示为一张海报图,HTML中可通过它的'poster'属性来指定。
     * 如果未指定'poster'属性,则通过此方法提供一个默认的海报图。
     *
     * @return 位图用作默认海报的图像,如果没有此类图像,则为null。
     */
    @Nullable
    @Override
    public Bitmap getDefaultVideoPoster() {
        return super.getDefaultVideoPoster();
    }

    /**
     * 当全屏的视频正在缓冲时,此方法返回一个占位视图(比如旋转的菊花)。
     * @return 查看视频加载时要显示的视图。 该值可以为null。
     */
    @Nullable
    @Override
    public View getVideoLoadingProgressView() {
        return super.getVideoLoadingProgressView();
    }

    /**
     * 获得所有访问历史项目的列表,用于链接着色。
     *
     * @param callback    ValueCallback
     */
    @Override
    public void getVisitedHistory(ValueCallback<String[]> callback) {
        super.getVisitedHistory(callback);
    }

    /**
     * 通知主机应用程序关闭给定的WebView,并在必要时将其从视图系统中删除。 此时,WebCore已停止在此窗口中的任何加载,并已删除javascript中的任何跨脚本编写功能。
     *
     * 与onCreateWindow(WebView,boolean,boolean,Message)一样,应用程序应确保显示的任何URL或安全性指示符都已更新,以便用户可以告知他们正在与之交互的页面已被关闭。
     * @param window 需要关闭的WebView。
     */
    @Override
    public void onCloseWindow(WebView window) {
        super.onCloseWindow(window);
    }

    /**
     * 接收JavaScript控制台消息
     * @param consoleMessage 包含控制台消息详细信息的对象。
     * @return 如果消息由客户端处理,则为true。
     */
    public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
        return false;
    }
    
    /**
     * 请求宿主应用程序创建一个新窗口。
     * 如果主机应用程序选择遵循此请求,则应从此方法返回true,创建新的WebView以托管窗口,将其插入View系统并使用新的WebView作为参数将提供的resultMsg消息发送到其目标。
     * 如果主机应用程序选择不遵守请求,则应从此方法返回false。此方法的默认实现不执行任何操作,因此返回false。
     *
     * 当isUserGesture标志为false时,应用程序通常不允许创建窗口,因为这可能是不需要的弹出窗口。
     *
     * 应用程序应该小心显示新窗口:不要简单地将其覆盖在现有的WebView上,因为这可能会误导用户他们正在查看的站点。
     * 如果您的应用程序显示主页面的URL,请确保以类似的方式显示新窗口的URL。如果您的应用程序未显示URL,请考虑完全禁止创建新窗口。
     *
     * 注意:没有值得信赖的方法来判断哪个页面请求了新窗口:请求可能来自WebView中的第三方iframe。
     *
     * @param view 从中发出新窗口请求的WebView。
     * @param isDialog 如果新窗口应该是对话框而不是全尺寸窗口,则为true。
     * @param isUserGesture 如果请求是由用户手势发起的,则为true,例如用户单击链接。
     * @param resultMsg 创建新WebView后要发送的消息。 resultMsg.obj是一个WebView.WebViewTransport对象。 这应该用于通过调用WebView.WebViewTransport #setWebView(WebView)来传输新的WebView。
     * @return 如果宿主应用程序将创建一个新窗口,则此方法应返回true,在这种情况下,应将resultMsg发送到其目标。 否则,此方法应返回false。 从此方法返回false但发送resultMsg将导致未定义的行为。
     */
    @Override
    public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
        return super.onCreateWindow(view, isDialog, isUserGesture, resultMsg);
    }

    /**
     * 当前一个调用 onGeolocationPermissionsShowPrompt() 取消时,隐藏相关的UI。
     */
    @Override
    public void onGeolocationPermissionsHidePrompt() {
        super.onGeolocationPermissionsHidePrompt();
    }

    /**
     * 指定源的网页内容在没有设置权限状态下尝试使用地理位置API。
     * 从API24开始,此方法只为安全的源(https)调用,非安全的源会被自动拒绝
     *
     * @param origin 尝试使用Geolocation API的Web内容的来源。
     * @param callback 用于设置原点的权限状态的回调。
     */
    @Override
    public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
        super.onGeolocationPermissionsShowPrompt(origin, callback);
    }

    /**
     * 通知主机应用程序当前页面已退出全屏模式。
     * 主机应用程序必须隐藏自定义视图,即。 当内容进入全屏时,视图传递给onShowCustomView(View,WebChromeClient.CustomViewCallback)。
     */
    @Override
    public void onHideCustomView() {
        super.onHideCustomView();
    }

    /**
     * 告诉客户端显示javascript警告对话框。
     * 如果客户端返回true,则WebView将假定客户端将处理该对话框。
     * 如果客户端返回false,它将继续执行。
     *
     * @param view 启动回调的WebView。
     * @param url 请求对话的页面的URL。
     * @param message 要在窗口中显示的消息。
     * @param result 一个JsResult确认用户点击进入。
     * @return boolean 客户端是否将处理警报对话框。
     */
    @Override
    public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
        return super.onJsAlert(view, url, message, result);
    }

    /**
     * 显示一个对话框让用户选择是否离开当前页面
     * @param view 启动回调的WebView。
     * @param url 请求对话的页面的URL。
     * @param message 要在窗口中显示的消息。
     * @param result JsResult用于将用户的响应发送到javascript。
     * @return boolean  客户端是否将处理确认对话框。
     */
    public boolean onJsBeforeUnload(WebView view, String url, String message, JsResult result) {
        return false;
    }

    /**
     * 告诉客户端向用户显示   确认   对话框。
     * 如果客户端返回true,则WebView将假定客户端将处理确认对话框并调用相应的JsResult方法。
     * 如果客户端返回false,则将返回默认值false为javascript。 默认行为是返回false。
     *
     * @param view 启动回调的WebView
     * @param url 请求对话的页面的URL
     * @param message 要在窗口中显示的消息
     * @param result JsResult用于将用户的响应发送到javascript
     * @return boolean  客户端是否将处理确认对话框。默认行为是返回false
     */
    public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
        return false;
    }

    /**
     * 告诉客户端向用户显示    提示   对话框。
     * 如果客户端返回true,则WebView将假定客户端将处理提示对话框并调用相应的JsPromptResult方法。
     * 如果客户端返回false,则默认值false将返回到javascript。 默认行为是返回false。
     * @param view 启动回调的WebView。
     * @param url 请求对话的页面的URL。
     * @param message 要在窗口中显示的消息。
     * @param defaultValue 提示对话框中显示的默认值。
     * @param result 用于将用户的响应发送到javascript的JsPromptResult。
     * @return
     */
    public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
        return false;
    }

    /**
     * 通知主机应用程序Web内容请求访问指定资源的权限,并且当前未授予或拒绝该权限。
     * 主机应用程序必须调用PermissionRequest#grant(String [])或PermissionRequest #deny()。
     * 如果未覆盖此方法,则拒绝该权限。
     *
     * @param request 来自当前Web内容的PermissionRequest。
     */
    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public void onPermissionRequest(PermissionRequest request) {
        request.deny();
    }

    /**
     * 通知主机应用程序已取消给定的权限请求。
     * 因此,应隐藏任何相关的UI。
     * @param request
     */
    @Override
    public void onPermissionRequestCanceled(PermissionRequest request) {
        super.onPermissionRequestCanceled(request);
    }

    /**
     * 接收当前页面的加载进度
     *
     * @param view 启动回调的WebView
     * @param newProgress 当前页面加载进度,由0到100之间的整数表示。
     */
    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        super.onProgressChanged(view, newProgress);
    }

    /**
     * 接收图标(favicon)
     * @param view 启动回调的WebView
     * @param icon 包含当前页面的favicon的位图。
     */
    @Override
    public void onReceivedIcon(WebView view, Bitmap icon) {
        super.onReceivedIcon(view, icon);
    }

    /**
     * 接收文档标题
     * @param view 启动回调的WebView
     * @param title 包含文档新标题的String。
     */
    @Override
    public void onReceivedTitle(WebView view, String title) {
        super.onReceivedTitle(view, title);
    }


    /**
     * 通知url的主机应用程序获取apple-touch-icon。
     * Android中处理Touch Icon的方案
     * http://droidyue.com/blog/2015/01/18/deal-with-touch-icon-in-android/index.html
     * @param view 启动回调的WebView
     * @param url 图标网址
     * @param precomposed 如果网址是预先组合的触摸图标,则为true。
     */
    @Override
    public void onReceivedTouchIconUrl(WebView view, String url, boolean precomposed) {
        super.onReceivedTouchIconUrl(view, url, precomposed);
    }

    /**
     * 请求获取取焦点
     * 请求显示和关注此WebView。
     * 这可能是由于另一个WebView在此WebView中打开一个链接并请求显示此WebView。
     * @param view 启动回调的WebView
     */
    @Override
    public void onRequestFocus(WebView view) {
        super.onRequestFocus(view);
    }

    /**
     * 通知应用程序当前页面已进入全屏模式。
     * 主机应用程序必须以全屏模式显示,包含Web内容(视频或其他HTML内容)的自定义视图。
     * @param view 启动回调的WebView
     * @param callback 调用此回调以请求页面退出全屏模式。
     */
    @Override
    public void onShowCustomView(View view, CustomViewCallback callback) {
        super.onShowCustomView(view, callback);
    }

    /**
     * 为'<input type="file" />'显示文件选择器,返回false使用默认处理
     *
     * 告诉客户端显示文件选择器。
     * 这被称为处理具有“文件”输入类型的HTML表单,以响应用户按下“选择文件”按钮。
     * 要取消请求,请调用filePathCallback.onReceiveValue(null)并返回true。
     * @param webView 启动回调的WebView
     * @param filePathCallback 调用此回调以提供要上载的文件的路径列表,或取消以null。
     *                        只有在onShowFileChooser(WebView,ValueCallback,WebChromeClient.FileChooserParams)实现返回true时才能调用。
     * @param fileChooserParams 描述要打开的文件选择器的模式,以及与其一起使用的选项。
     * @return 如果将调用filePathCallback,则为true;如果使用默认处理,则为false。
     */
    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {
        return false;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值