android webview 例子,android – webview shouldinterceptrequest示例

那么简短的答案是它的工作原理与shouldOverrideUrlLoading(WebView视图,String url)非常相似,如

WebView tutorial所示。

要开始使用,请参阅下面的代码。您只需覆盖WebViewClient的shouldInterceptRequest(WebView视图,String url)方法即可。显然,你不必在线,但是为了紧凑,这就是我所做的:

WebView webview = (WebView) findViewById(R.id.webview);

webview.setWebViewClient(new WebViewClient() {

@Override

public WebResourceResponse shouldInterceptRequest (final WebView view, String url) {

if (url.contains(".css")) {

return getCssWebResourceResponseFromAsset();

} else {

return super.shouldInterceptRequest(view, url);

}

}

/**

* Return WebResourceResponse with CSS markup from a String.

*/

@SuppressWarnings("deprecation")

private WebResourceResponse getCssWebResourceResponseFromString() {

return getUtf8EncodedCssWebResourceResponse(new StringBufferInputStream("body { background-color: #F781F3; }"));

}

/**

* Return WebResourceResponse with CSS markup from an asset (e.g. "assets/style.css").

*/

private WebResourceResponse getCssWebResourceResponseFromAsset() {

try {

return getUtf8EncodedCssWebResourceResponse(getAssets().open("style.css"));

} catch (IOException e) {

return null;

}

}

/**

* Return WebResourceResponse with CSS markup from a raw resource (e.g. "raw/style.css").

*/

private WebResourceResponse getCssWebResourceResponseFromRawResource() {

return getUtf8EncodedCssWebResourceResponse(getResources().openRawResource(R.raw.style));

}

private WebResourceResponse getUtf8EncodedCssWebResourceResponse(InputStream data) {

return new WebResourceResponse("text/css", "UTF-8", data);

}

});

webview.loadUrl("http://stackoverflow.com");

捕获加载的css文件,并返回自己的WebResourceResponse,其中包含要加载的数据。

请注意,此方法需要API级别11。

如果您想为Android 2.x做类似的操作,可能需要尝试使用前面提到的shouldOverrideUrlLoading(WebView视图,String url)来避免加载页面,手动抓取,将您自己的css文件的引用替换为,然后在WebView上调用loadData(String data,String mimeType,String encoding)(或loadDataWithBaseURL(String baseUrl,String data,String mimeType,String encoding,String historyUrl)),并将其作为一个字符串传递给操作的html内容。

之前:

后:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值