WebView(WebChromeClient)


public class MyWebChromeClient extends WebChromeClient {
    /**
     * 告诉主机应用程序加载页面的当前进度。
     * 参数:
     * view–启动回调的WebView。
     * newProgress–当前页面加载进度,用0到100之间的整数表示。
     */
    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        super.onProgressChanged(view, newProgress);
        Log.i("xd==", "newProgress==" + newProgress);

    }

    /**
     * 将文档标题的更改通知宿主应用程序。
     * 参数:
     * view–启动回调的WebView。
     * title–包含文档新标题的字符串
     */
    @Override
    public void onReceivedTitle(WebView view, String title) {
        super.onReceivedTitle(view, title);
        Log.i("xd==", "onReceivedTitle==" + title);
    }

    /**
     * 通知主机应用程序当前页面的新收藏夹图标。
     * 参数:
     * view–启动回调的WebView。
     * icon–包含当前页面收藏夹图标的位图。
     */
    @Override
    public void onReceivedIcon(WebView view, Bitmap icon) {
        super.onReceivedIcon(view, icon);
    }

    /**
     * 将apple touch图标的url通知主机应用程序。
     * 参数:
     * view–启动回调的WebView。
     * url–图标url。
     * precomposed–如果url用于预编译的触摸图标,则为true。
     */
    @Override
    public void onReceivedTouchIconUrl(WebView view, String url, boolean precomposed) {
        super.onReceivedTouchIconUrl(view, url, precomposed);
        Log.i("xd==", "onReceivedTouchIconUrl==" + url);

    }

    /**
     * 将当前页面输入全屏模式通知主机应用程序。在此调用之后,Web内容将不再在WebView中渲染,
     * 而是在视图中呈现。主机应用程序应将此视图添加到使用android.view.windowmanager.layoutparams.flag_fullscreen标志的窗口中,
     * 以便实际显示此Web内容全屏。
     * 该应用程序可以通过调用回调来明确退出全屏模式(例如,当用户按下返回按钮时)。但是,这通常不是必需的,
     * 因为网页通常会显示其自己的UI以关闭全屏。无论WebView如何退出全屏模式,WebView都将调用OnhideCustomView(),
     * 以删除自定义视图的应用程序发出信号。
     * 如果此方法没有被覆盖,WebView将报告到网页上,它不支持全屏模式,并且不会符合网页以全屏模式运行的请求。
     * 注意:如果覆盖了此方法,则应用程序必须override onHideCustomView().
     */
    @Override
    public void onShowCustomView(View view, CustomViewCallback callback) {
        super.onShowCustomView(view, callback);
    }

    /**
     * 通知主机应用程序当前页面已退出全屏模式。主机应用程序必须隐藏自定义视图(以前传递给onshowcustomview()
     * 的视图)。此通话后,Web内容将再次在原始WebView中渲染。
     * 注意:如果覆盖此方法,则应用程序还必须覆盖onshowcustomview()。
     */
    @Override
    public void onHideCustomView() {
        super.onHideCustomView();
    }

    @Override
    public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
        return super.onCreateWindow(view, isDialog, isUserGesture, resultMsg);
    }

    /**
     * 请求显示此WebView的显示和关注点。由于另一个WebView打开了此WebView中的链接并要求显示此WebView,
     * 因此可能会发生这种情况。
     */
    @Override
    public void onRequestFocus(WebView view) {
        super.onRequestFocus(view);
    }

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

    /**
     * 通知主机应用程序网页要显示JavaScript警报()对话框。
     * 如果此方法返回false或未被覆盖,则默认行为是显示包含警报消息的对话框,并暂停JavaScript执行,
     * 直到对话框被取消。要显示自定义对话框,应用程序应该从该方法返回true,在这种情况下,默认对话框将不会显示,
     * JavaScript执行将暂停。当自定义对话框被取消时,应用程序应该调用JsResult.confrm(),
     * 以便恢复JavaScript执行。要抑制对话框并允许JavaScript继续执行,请立即调用JsResult.confrm(),
     * 然后返回true。
     * 请注意,如果WebChromeClient设置为null,或者根本没有设置WebChromeClient,则默认对话框将被抑制,Javascript将立即继续执行。
     * 请注意,默认对话框不会继承android.view。陈列父窗口的FLAG_SECURE标志。
     * 如果请求被处理或忽略,则布尔值为true。如果WebView需要显示默认对话框,则为false。
     */
    @Override
    public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
        return super.onJsAlert(view, url, message, result);
    }

    /**
     * 通知主机应用程序网页要显示JavaScript confirm()对话框。
     * 如果此方法返回false或未被重写,则默认行为是显示包含消息的对话框,并暂停JavaScript执行,
     * 直到对话框被取消。当用户按下“确认”按钮时,默认对话框将向JavaScript confirm()代码返回true,
     * 而当用户按下‘取消’按钮或取消对话框时,则会向JavaScript代码返回false。
     * 要显示自定义对话框,应用程序应该从该方法返回true,在这种情况下,默认对话框将不会显示,
     * JavaScript执行将暂停。当取消自定义对话框时,应用程序应调用JsResult.confrm()或JsResult.cancel()。
     * 要抑制对话框并允许JavaScript继续执行,请立即调用JsResult.confrm()或JsResult.cancel(),然后返回true。
     * 请注意,如果WebChromeClient设置为null,或者根本没有设置WebChromeClient,则默认对话框将被抑制,默认值false将立即返回到JavaScript代码中。
     * 请注意,默认对话框不会继承android.view。陈列父窗口的FLAG_SECURE标志。
     */
    @Override
    public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
        return super.onJsConfirm(view, url, message, result);
    }

    /**
     * 通知主机应用程序网页要显示JavaScript prompt()对话框。
     * 如果此方法返回false或未被重写,则默认行为是显示包含消息的对话框,并暂停JavaScript执行,直到对话框被取消。
     * 对话框关闭后,JavaScript prompt()将返回用户键入的字符串,如果用户按下“取消”按钮,则返回null。
     * 要显示自定义对话框,应用程序应该从该方法返回true,在这种情况下,默认对话框将不会显示,JavaScript执行将暂停。
     * 取消自定义对话框时,应用程序应调用JsPromptResult.confirm(结果)。
     * 要抑制对话框并允许JavaScript继续执行,请立即调用JsPromptResult.confirm(result),然后返回true。
     * 请注意,如果WebChromeClient设置为null,或者根本没有设置WebChromeClient,则默认对话框将被抑制,null将立即返回到JavaScript代码中。
     * 请注意,默认对话框不会继承android.view。陈列父窗口的FLAG_SECURE标志。
     */
    @Override
    public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
        return super.onJsPrompt(view, url, message, defaultValue, result);
    }

    /**
     * 通知主机应用程序,网页要在加载前确认来自JavaScript的导航。
     * 如果此方法返回false或未被重写,则默认行为是显示包含消息的对话框,并暂停JavaScript执行,直到对话框被取消。
     * 如果用户确认导航,默认对话框将继续导航,如果用户希望停留在当前页面,则默认对话框将停止导航。
     * 要显示自定义对话框,应用程序应该从该方法返回true,在这种情况下,默认对话框将不会显示,JavaScript执行将暂停。
     * 当自定义对话框被取消时,应用程序应该调用JsResult.confrm()来继续导航,或者调用JsResult.cancel()
     * 来停留在当前页面上。
     * 要抑制对话框并允许JavaScript继续执行,请立即调用JsResult.confrm()或JsResult.cancel(),然后返回true。
     * 请注意,如果WebChromeClient设置为null,或者根本没有设置WebChromeClient,则默认对话框将被抑制,导航将立即恢复。
     * 请注意,默认对话框不会继承android.view。陈列父窗口的FLAG_SECURE标志。
     */
    @Override
    public boolean onJsBeforeUnload(WebView view, String url, String message, JsResult result) {
        return super.onJsBeforeUnload(view, url, message, result);
    }

    /**
     * 通知主机应用程序来自指定来源的web内容正在尝试使用Geolocation API,但当前未为该来源设置权限状态。
     * 主机应用程序应使用所需的权限状态调用指定的回调。有关详细信息,请参阅地理位置权限。
     * 请注意,对于以Android N和更高版本SDK为目标的应用程序(API级别>Android.os.Build.VERSION_CODES.M),
     * 仅对源自安全来源(如https)的请求调用此方法。在非安全来源地,地理定位请求会被自动拒绝。
     * 参数:
     * origin–试图使用Geolocation API的web内容的来源。callback–用于设置源的权限状态的回调。
     */
    @Override
    public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
        super.onGeolocationPermissionsShowPrompt(origin, callback);
    }

    /**
     * 通知主机应用程序先前调用onGeolocationPermissionsShowPrompt()时请求的地理位置权限已被取消。
     * 因此,任何相关的UI都应该隐藏起来。
     */
    @Override
    public void onGeolocationPermissionsHidePrompt() {
        super.onGeolocationPermissionsHidePrompt();
    }

    /**
     * 通知主机应用程序web内容正在请求访问指定资源的权限,而该权限当前未被授予或拒绝。
     * 主机应用程序必须调用PermissionRequest.grant(String[])或PermissionRequest.deny()。
     * 如果未重写此方法,则拒绝该权限。
     */
    @Override
    public void onPermissionRequest(PermissionRequest request) {
        super.onPermissionRequest(request);
    }

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

    /**
     * 向主机应用程序报告JavaScript控制台消息。ChromeClient应该覆盖这一点,以便在他们认为合适的时候处理日志消息。
     */
    @Override
    public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
        return super.onConsoleMessage(consoleMessage);
    }

    /**
     * 不播放时,视频元素由“海报”图像表示。可以通过HTML中视频标签的海报属性来指定要使用的图像。
     * 如果该属性不存在,则将使用默认海报。此方法允许ChromeClient提供默认图像。
     */
    @Nullable
    @Override
    public Bitmap getDefaultVideoPoster() {
        return super.getDefaultVideoPoster();
    }

    /**
     * 获取要在进行全屏视频缓冲时显示的视图。主机应用程序可以覆盖此方法,以提供包含微调器或类似项的视图。
     * 查看加载视频时要显示的视图。
     */
    @Nullable
    @Override
    public View getVideoLoadingProgressView() {
        return super.getVideoLoadingProgressView();
    }

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

    /**
     * 告诉客户端显示一个文件选择器。调用它是为了处理具有“文件”输入类型的HTML表单,以响应用户按下“选择文件”按钮。
     * 若要取消请求,请调用filePathCallback.onReceiveValue(null)并返回true。
     * 参数:
     * webView–启动请求的webView实例。
     * filePathCallback–调用此回调以提供要上载的文件的路径列表,或null以取消。只有在onShowFileChooser实现返回true时才能调用。fileChooserParameters–描述要打开的文件选择器的模式以及与之一起使用的选项。
     * 如果将调用filePathCallback,则为true;如果使用默认处理,则为false。
     * 另请参阅:
     * WebChromeClient。文件选择器参数
     */
    @Override
    public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {
        return super.onShowFileChooser(webView, filePathCallback, fileChooserParams);
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值