java - 在 android webview 中阻止视频 - shouldInterceptRequest() 的替代方法

标签 java android webview

我在 android 中使用 webview 创建了一个网络浏览器。我的目标是在加载之前控制 webview 的内容。每当 webview 的内容向任何域服务器发出请求时,它都必须通过 shoulInterceptRequest() .如果 url 指向任何视频上传网站(youtube.com、vimeo.com),我可以将其更改为某个拒绝访问的 url,这样视频就不会被加载。

    @Override
    public WebResourceResponse shouldInterceptRequest(final WebView view, String url) {
        try { 
            if (access.permission(url)) {
                return super.shouldInterceptRequest(view, url);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return getResponseData();
    }

    private WebResourceResponse getResponseData() {
        try {
            String str = "Access Denied";
            InputStream data = new ByteArrayInputStream(str.getBytes("UTF-8"));
            return new WebResourceResponse("text/css", "UTF-8", data);
        } catch (IOException e) {
            return null;
        }
    }

但是shoulInterceptRequest()可从 API 11 获得。我需​​要它从 API 8 开始工作。

是否有任何替代方法来实现它?在加载任何数据之前,如果它指向任何视频上传站点,我需要阻止该 url。

最佳答案

如何使用 http://developer.android.com/reference/android/webkit/WebViewClient.html#shouldOverrideUrlLoading(android.webkit.WebView , java.lang.String) 事件?

您可以屏蔽该 url,然后调用 http://developer.android.com/reference/android/webkit/WebView.html#loadUrl(java.lang.String ) 来显示任何你想要的东西(甚至可以使用“javascript:do_something()”符号运行任意 javascript)

关于java - 在 android webview 中阻止视频 - shouldInterceptRequest() 的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11471143/

相关文章:

java - Derby 数据库插入错误

java - Quarkus MySQL JDBC 依赖项

Android:在 ListView 中使用之前修改来自 Content Provider 的数据

android - 使用 GridLayoutManager 以编程方式滚动 RecyclerView

Android:在自定义 WebView 中从 onLongPress 打开 ContextMenu

javascript - 将 HTML 文件中的外部 javascript 文件从 Android Assets 文件夹加载到 WebView 中

java - 如何从字符串创建变量名?

java - 如何保护 JSF 2.0 facelets 不被直接访问?

c# - MVVM交叉特征

Android WebView 但没有其他组件