java - Android webView shouldInterceptRequest - 停止加载资源

标签 java android webview android-webview

我正在尝试拦截并停止加载 webView 上的所有 mp4 视频,因为我正在使用 shouldInterceptRequest。我能够拦截视频,例如:显示一个对话框,但是我无法停止加载它们,知道为什么吗?

webView.setWebViewClient(new WebViewClient() {
    @SuppressWarnings("deprecation")
    @Override
    public WebResourceResponse shouldInterceptRequest(final WebView view, String url) {
        try { 
            if (url.contains(".mp4?")) {
                return getResponseData();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return super.shouldInterceptRequest(view, url);
    }

    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;
        }
    }

最佳答案

这可能对您有帮助:

@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
    if (yourCondition) {
        Handler handler = new Handler(getMainLooper());
        handler.post(new Runnable() {
            @Override
            public void run() {
                YourwebView.stopLoading();
                YourwebView.doAnythingYouWant();
            }
        });
    }
    return super.shouldInterceptRequest(view, request);
}

我创建了该线程,因为无法在当前正在运行的线程上调用 WebView 方法(即 stopLoading() ),并且该线程是“Chrome_FileThread”

此外,获取 getMainLooper() 因为在上述情况下,我们无法在未调用 Looper.prepare() 的线程内创建处理程序

希望这有帮助。

关于java - Android webView shouldInterceptRequest - 停止加载资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32746023/

相关文章:

objective-c - NSTextField 像 safari 地址栏

java - Spring Security + Scratch Java 扩展

Java文件交换教程: why put the document in a jar before encryption?

Java:将浮点二进制转换为浮点十进制

java - 通知恢复应用程序而不是重新启动

android - 如何将壁纸打包成apk?

java - Android Phonegap 2.1 > 2.2 升级错误

java如何实现ArrayList的push、pop、shift和unshift

android - ARM 组装。将 r13(堆栈指针)用作通用寄存器是否安全?

android - 在 android webview 中禁用弹出窗口拦截器