@Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { // Intercept requests for private images and add the WP.com authorization header if (mIsPrivatePost && !TextUtils.isEmpty(mToken) && UrlUtils.isImageUrl(url)) { try { URL imageUrl = new URL(url); HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection(); conn.setReadTimeout(WPRestClient.REST_TIMEOUT_MS); conn.setConnectTimeout(WPRestClient.REST_TIMEOUT_MS); conn.setRequestProperty("Authorization", "Bearer " + mToken); conn.setRequestProperty("User-Agent", WordPress.getUserAgent()); conn.setRequestProperty("Connection", "Keep-Alive"); conn.connect(); if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { InputStream inputStream = new BufferedInputStream(conn.getInputStream()); return new WebResourceResponse(conn.getContentType(), "UTF-8", inputStream); } } catch (IOException e) { AppLog.e(AppLog.T.READER, e); } } return null; }
@Override public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { /* ByteArrayInputStream EMPTY = new ByteArrayInputStream("".getBytes()); if (mAdBlock.isAd(request.getUrl().getHost())) { return new WebResourceResponse("text/plain", "utf-8", EMPTY); } if(request.getUrl().getHost().indexOf("127.0.0.1")>=0){ //ToastUtil.showMessage("this site is insecure"); return new WebResourceResponse("text/plain", "utf-8", EMPTY); } */ return super.shouldInterceptRequest(view, request); }
public WebResourceResponse getResource(String path) { int index = path.lastIndexOf("."); if (index == -1) { return null; } String ext = path.substring(index); Log.d("wlx", ext); String mini = (String) this.minitype.get(ext); if (mini == null) { return null; } try { return new WebResourceResponse(mini, "UTF-8", new FileInputStream(this.resource + path)); } catch (FileNotFoundException e) { e.printStackTrace(); return null; } }
@Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { WebResourceResponse webResourceResponse = null; if (mCustomWebViewClient!=null){ webResourceResponse = mCustomWebViewClient.shouldInterceptRequest(view,url); } if (webResourceResponse != null){ return webResourceResponse; } if (!mIsEnableCache){ return null; } return mWebViewCache.getWebResourceResponse(this,url,mCacheStrategy, mEncoding,mCacheInterceptor); }
@TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { WebResourceResponse webResourceResponse = null; if (mCustomWebViewClient!=null){ webResourceResponse = mCustomWebViewClient.shouldInterceptRequest(view,request); } if (webResourceResponse != null){ return webResourceResponse; } if (!mIsEnableCache){ return null; } return mWebViewCache.getWebResourceResponse(this,request.getUrl().toString(), mCacheStrategy,mEncoding,mCacheInterceptor); }
@TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { //此处对文件资源,js,css等请求资源进行拦截,替换 Log.d(TAG, "shouldInterceptRequest: request = \n" + "\nurl = " + request.getUrl().toString() + "\nmethod = " + request.getMethod() + "\nheaders = " + request.getRequestHeaders().toString()); // String url = request.getUrl().toString(); // if ((url.startsWith("https://") || url.startsWith("http://")) && (url.endsWith(".png") || url.endsWith(".jpg"))) { // Log.d(TAG, "拦截资源 :" + url); // try { // WebResourceResponse response = new WebResourceResponse(MimeTypeMap.getFileExtensionFromUrl(".jpg"), "utf-8", FileUtils.getInputStreamFromAssets("img/dog.jpg")); // return response; // } catch (IOException e) { // e.printStackTrace(); // } // } return super.shouldInterceptRequest(view, request); }
@Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { // Uses cache to determine if the url is ad, // and returns an empty resource for ads. boolean ad; if (!mLoadedUrls.containsKey(url)) { ad = mAdBlocker.isAd(url); mLoadedUrls.put(url, ad); } else { ad = mLoadedUrls.get(url); } // Verbose blocked or passed urls Log.v(getClass().getSimpleName(), (ad ? "Blocked" : "Pass") + ": " + Uri.parse(url).getHost()); // Return appropriate response if(ad) { return mAdBlocker.createEmptyResource(); } return super.shouldInterceptRequest(view, url); }
/** * 获取本地资源 */ @Nullable private WebResourceResponse getWebResourceResponse(String url) { try { // 如果是图片且本地有缓存 if (isImageSuffix(url) || isGifSuffix(url)) { FileInputStream inputStream = mCache.getStream(url); if (null != inputStream) { return new WebResourceResponse(getMimeType(url), "base64", inputStream); } } } catch (Exception e) { e.printStackTrace(); } return null; }
@TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { if (prefs.getBoolean("adblock", true)) { boolean ad; if (!loadedUrls.containsKey(url)) { ad = AdBlocker.isAd(url); loadedUrls.put(url, ad); } else { ad = loadedUrls.get(url); } return ad ? AdBlocker.createEmptyResource() : super.shouldInterceptRequest(view, url); } return super.shouldInterceptRequest(view, url); }
@Override public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (mAdBlock.isAd(request.getUrl().toString())) { String stweb = "\n \n \n \n BLOCKED BY AD-BLOCKER" + "\n" + "\n" + " \n" + " \n" + " \n - TO DISABLE AD-BLOCKER GO TO SETTINGS/GENEARL SETTING"; ByteArrayInputStream EMPTY = new ByteArrayInputStream(stweb.getBytes()); return new WebResourceResponse("text/plain", "utf-8", EMPTY); } } return super.shouldInterceptRequest(view, request); }
@SuppressLint("NewApi") public WebResourceResponse shouldInterceptRequest (WebView view, WebResourceRequest request) { String url = request.getUrl().toString(); try { URL urlData = new URL(url); String path = urlData.getPath().substring(1); if (!path.endsWith(".js") && !path.endsWith(".css")) { return null; } Log.d("BasicWebViewClient", "Find " + path + " from asset."); InputStream localStream = assetMgr.open(path); Log.d("BasicWebViewClient", url + " found, try load from asset."); return new WebResourceResponse((path.endsWith(".js") ? "text/javascript" : "text/css"), "UTF-8", localStream); } catch (Exception e) { return null; } }
@SuppressWarnings("deprecation") @Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { try { URL urlData = new URL(url); String path = urlData.getPath().substring(1); if (!path.endsWith(".js") && !path.endsWith(".css")) { return null; } Log.d("BasicWebViewClient", "Find " + path + " from asset."); InputStream localStream = assetMgr.open(path); Log.d("BasicWebViewClient", url + " found, try load from asset."); return new WebResourceResponse((url.contains(".js") ? "text/javascript" : "text/css"), "UTF-8", localStream); } catch (Exception e) { return null; } }
/** * Attempt to retrieve the WebResourceResponse associated with the given <code>url</code>. * This method should be invoked from within * {@link android.webkit.WebViewClient#shouldInterceptRequest(android.webkit.WebView, String)}. * * @param url the url to process. * @return a response if the request URL had a matching handler, null if no handler was found. */ public WebResourceResponse shouldInterceptRequest(String url) { PathHandler handler = null; Uri uri = parseAndVerifyUrl(url); if (uri != null) { synchronized (uriMatcher) { handler = (PathHandler) uriMatcher.match(uri); } } if (handler == null) return null; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { return new WebResourceResponse(handler.getMimeType(), handler.getEncoding(), new LegacyLazyInputStream(handler, uri)); } else { InputStream is = handler.handle(uri); return new WebResourceResponse(handler.getMimeType(), handler.getEncoding(), is); } }
public void testHostAssets() { final String testHtmlContents = "<body><div>hah</div></body>"; WebViewLocalServer assetServer = new WebViewLocalServer(new MockProtocolHandler() { @Override public InputStream openAsset(String path) throws IOException { if (path.equals("/www/test.html")) { return new ByteArrayInputStream(testHtmlContents.getBytes("utf-8")); } return null; } }); WebViewLocalServer.AssetHostingDetails details = assetServer.hostAssets("androidplatform.net", "/www", "/assets", true, true); assertEquals(details.getHttpPrefix(), Uri.parse("http://androidplatform.net/assets")); assertEquals(details.getHttpsPrefix(), Uri.parse("https://androidplatform.net/assets")); WebResourceResponse response = assetServer.shouldInterceptRequest("http://androidplatform.net/assets/test.html"); assertNotNull(response); assertEquals(testHtmlContents, readAsString(response.getData(), "utf-8")); }
private WebResourceResponse loadFromAssets( String url, String assetPath, String mimeType, String encoding ) { AssetManager assetManager = this.activity.getAssets(); InputStream input = null; try { Log.d(LOG_TAG, "Loading from assets: " + assetPath); input = assetManager.open("/images/logo.png"); WebResourceResponse response = new WebResourceResponse(mimeType, encoding, input); return response; } catch (IOException e) { Log.e("WEB-APP", "Error loading " + assetPath + " from assets: " + e.getMessage(), e); } return null; }
@TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public WebResourceResponse shouldInterceptRequest(WebView aWebView, WebResourceRequest request) { String strMimeType = getFileMimeType(request.getUrl().toString()); if (strMimeType != null) { String lowerCaseUrl = strMimeType.toLowerCase(); if (lowerCaseUrl.contains("png") || lowerCaseUrl.contains("jpg") || lowerCaseUrl.contains("jpeg")) { return handleImageRequest(aWebView, request, strMimeType); } } return super.shouldInterceptRequest(aWebView, request); }
@TargetApi(Build.VERSION_CODES.LOLLIPOP) private WebResourceResponse handleImageRequest(final WebView aWebView, final WebResourceRequest request, String strMimeType) { KCWebView webView = (KCWebView) aWebView; if (mImageDownloader == null) mImageDownloader = new KCWebImageDownloader(webView.getContext(), webView.getWebPath()); if (mWebImageHandler==null) mWebImageHandler = new KCWebImageHandler(mWebImageListener); KCWebImage webImage = mImageDownloader.downloadImageFile(request.getUrl().toString(), mWebImageHandler.add(request.getUrl().toString())); InputStream stream = webImage.getInputStream(); if (stream == null) { Log.e("image", "current stream is null,download image from net"); return null; } return new WebResourceResponse(strMimeType, "utf-8", stream); }
@TargetApi(Build.VERSION_CODES.HONEYCOMB) private WebResourceResponse handleImageRequest(final WebView aWebView, final String aUrl, String strMimeType) { KCWebView webView = (KCWebView) aWebView; if (mImageDownloader == null) mImageDownloader = new KCWebImageDownloader(aWebView.getContext(), webView.getWebPath()); if (mWebImageHandler==null) mWebImageHandler = new KCWebImageHandler(mWebImageListener); KCWebImage webImage = mImageDownloader.downloadImageFile(aUrl, mWebImageHandler.add(aUrl)); InputStream stream = webImage.getInputStream(); if (stream == null) { Log.e("image", "current stream is null,download image from net"); return null; } return new WebResourceResponse(strMimeType, "utf-8", stream); }
@Override public WebResourceResponse loadUrl(String url) { NetflixUrl netflixUrl = new NetflixUrl(url); // note due to shouldOverrideUrlLoading, no /watch url ever gets here, so no need to cater for it if (netflixUrl.isNetflixUrl()) { client.getParams().setParameter(AllClientPNames.USER_AGENT, UserAgents.Mobile); if (netflixUrl.isTitle()) { client.getParams().setParameter(AllClientPNames.USER_AGENT, UserAgents.Desktop); return doLoadUrl(url); } else if (netflixUrl.isBrowse() || netflixUrl.isDefault()) { return doLoadUrl(url); } } // else return null; }
@SuppressWarnings("deprecation") @Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { if (url.startsWith("http://") || url.startsWith("https://")) { if (url.endsWith("//127.0.0.1/image.jpeg")) { InputStream inputStream = null; try { inputStream = fileHolder.openInputStream(); return new WebResourceResponse(fileHolder.getImageType() == FileHolder.ImageType.IMAGE_SVG ? "image/svg+xml" : "image/jpeg", null, inputStream); } catch (IOException e) { IOUtils.close(inputStream); } } return new WebResourceResponse("text/html", "UTF-8", null); } else { return null; } }
@TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public WebResourceResponse shouldInterceptRequest(@NonNull WebView view, @NonNull WebResourceRequest request) { String url = request.getUrl().toString(); if (url.contains("ads.js") || url.contains("f.js") || url.contains("pop.js") || url.contains("syndication.exoclick.com")) { return new WebResourceResponse("text/plain", "utf-8", nothing); } else if (url.contains("main.js")) { return getWebResourceResponseFromAsset(getSite(), "main.js", TYPE.JS); } else if (url.contains("exoclick.com") || url.contains("juicyadultads.com")) { return new WebResourceResponse("text/plain", "utf-8", nothing); } else { return super.shouldInterceptRequest(view, request); } }
@TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { try { // Check the against the whitelist and lock out access to the WebView directory // Changing this will cause problems for your application if (!parentEngine.pluginManager.shouldAllowRequest(url)) { LOG.w(TAG, "URL blocked by whitelist: " + url); // Results in a 404. return new WebResourceResponse("text/plain", "UTF-8", null); } CordovaResourceApi resourceApi = parentEngine.resourceApi; Uri origUri = Uri.parse(url); // Allow plugins to intercept WebView requests. Uri remappedUri = resourceApi.remapUri(origUri); if (!origUri.equals(remappedUri) || needsSpecialsInAssetUrlFix(origUri) || needsKitKatContentUrlFix(origUri)) { CordovaResourceApi.OpenForReadResult result = resourceApi.openForRead(remappedUri, true); return new WebResourceResponse(result.mimeType, "UTF-8", result.inputStream); } // If we don't need to special-case the request, let the browser load it. return null; } catch (IOException e) { if (!(e instanceof FileNotFoundException)) { LOG.e(TAG, "Error occurred while loading a file (returning a 404).", e); } // Results in a 404. return new WebResourceResponse("text/plain", "UTF-8", null); } }
protected WebResourceResponse shouldInterceptRequest(WebView webView, Uri uri) { if (!CID_SCHEME.equals(uri.getScheme())) { return RESULT_DO_NOT_INTERCEPT; } if (attachmentResolver == null) { return RESULT_DUMMY_RESPONSE; } String cid = uri.getSchemeSpecificPart(); if (TextUtils.isEmpty(cid)) { return RESULT_DUMMY_RESPONSE; } Uri attachmentUri = attachmentResolver.getAttachmentUriForContentId(cid); if (attachmentUri == null) { return RESULT_DUMMY_RESPONSE; } Context context = webView.getContext(); ContentResolver contentResolver = context.getContentResolver(); try { String mimeType = contentResolver.getType(attachmentUri); InputStream inputStream = contentResolver.openInputStream(attachmentUri); WebResourceResponse webResourceResponse = new WebResourceResponse(mimeType, null, inputStream); addCacheControlHeader(webResourceResponse); return webResourceResponse; } catch (Exception e) { Timber.e(e, "Error while intercepting URI: %s", uri); return RESULT_DUMMY_RESPONSE; } }
@Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { url = url.toLowerCase(); if(!url.contains(homeurl)){ if (!ADFilterTool.hasAd(context, url)) { return super.shouldInterceptRequest(view, url); }else{ return new WebResourceResponse(null,null,null); } }else{ return super.shouldInterceptRequest(view, url); }}
@Override public Object createWebResourceResponse(String mimeType, String encoding, InputStream data, Map<String, String> headers) { WebResourceResponse resourceResponse = new WebResourceResponse(mimeType, encoding, data); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { resourceResponse.setResponseHeaders(headers); } return resourceResponse; }
@Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { if (sonicSession != null) { return (WebResourceResponse) sonicSession.getSessionClient().requestResource(url); } return null; }
@Deprecated public WebResourceResponse shouldInterceptRequest(WebView view, String url) { if(mWebViewClient!=null){ return mWebViewClient.shouldInterceptRequest(view,url); } return super.shouldInterceptRequest(view,url); }
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { if(mWebViewClient!=null){ return mWebViewClient.shouldInterceptRequest(view,request); } return super.shouldInterceptRequest(view, request); }
public void onReceivedHttpError( WebView view, WebResourceRequest request, WebResourceResponse errorResponse) { if(mWebViewClient!=null){ mWebViewClient.onReceivedHttpError(view,request,errorResponse); return; } super.onReceivedHttpError(view,request,errorResponse); }
@Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { if (mAdBlock.isAd(url)) { ByteArrayInputStream EMPTY = new ByteArrayInputStream("".getBytes()); return new WebResourceResponse("text/plain", "utf-8", EMPTY); } return null; }
/** * 加载资源 * android5.0以下支持,注意:5.0+系统也会执行该方法 * * @param view * @param url * @return */ @Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { return super.shouldInterceptRequest(view, url); } else { return loadPage.shouldInterceptRequest(view, url); } }
/** * 加载资源 * android5.0+支持 * * @param view * @param request * @return */ @Override public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { WebResourceResponse resourceResponse = null; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { resourceResponse = loadPage.shouldInterceptRequest(view, request.getUrl().toString()); } if (resourceResponse == null) { return super.shouldInterceptRequest(view, request); } else { return resourceResponse; } }
@Override public Object createWebResourceResponse(String mimeType, String encoding, InputStream data, Map<String, String> headers) { WebResourceResponse resourceResponse = new WebResourceResponse(mimeType, encoding, data); if (SysUtils.hasLollipop()) { resourceResponse.setResponseHeaders(headers); } return resourceResponse; }
@TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { Uri url = request.getUrl(); if ("https://www.fengshihao.com/user.js".indexOf(url.toString()) == 0) { final WebResourceResponse userjs = new WebResourceResponse("text/javascript", "UTF-8", new ByteArrayInputStream("console.log('hello user js');".getBytes())); return userjs; } return super.shouldInterceptRequest(view, request); }
@TargetApi(21) public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { LogInfo.log("ZSM sFromNative shouldInterceptRequest == " + NativeWebViewUtils.getInstance().getFromNative() + " request == " + request.getUrl().toString()); if (!NativeWebViewUtils.getInstance().getFromNative()) { return super.shouldInterceptRequest(view, request); } super.shouldInterceptRequest(view, request); return NativeWebViewUtils.getInstance().getResource(request.getUrl().toString()); }
@Override public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) { if (mCustomWebViewClient!=null){ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { mCustomWebViewClient.onReceivedHttpError(view, request, errorResponse); } return; } super.onReceivedHttpError(view, request, errorResponse); }