2012-07-13 128 views
2

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

@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

工作有没有落实任何替代办法?如果要在加载任何数据之前将任何视频上传到网站,我需要阻止该网址。

回答

1

如何使用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“的javascript:do_something()”符号)

+1

shouldOverrideUrlLoading()只针对主URL,它是加载到webview中。也就是说,webview.loadUrl(www.example.com)。如果www.example.com包含视频,则日志不会显示该网址。它总是在shouldOverrideUrlLoading中显示www.test.com – 2012-07-14 02:05:58