@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); }
private void setupWebView() { WebSettings settings = mWvWebview.getSettings(); settings.setJavaScriptEnabled(true); settings.setSupportZoom(false); settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); settings.setDomStorageEnabled(true); WebViewClient webViewClient = new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { view.loadUrl(String.valueOf(request.getUrl())); return true; } }; mWvWebview.setWebViewClient(webViewClient); }
@TargetApi(24) @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { Log.d(TAG, "shouldOverrideUrlLoading() called with: request = [" + request.getUrl() + "]"); if (pager.webviewClient != null) { if (pager.webviewClient.shouldOverrideUrlLoading(view, request)) { return true; } } if (handleUrlLoading(view, request.getUrl().toString())) { return true; } return super.shouldOverrideUrlLoading(view, request); }
@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 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); wv_test = (WebView)findViewById(R.id.wv_test) ; wv_test.getSettings().setJavaScriptEnabled(true); /* "JSInterface" ==> window.JSInterface * class JSInterface all @javascriptInterface methods * js can call JSInterface.method()*/ wv_test.addJavascriptInterface(new JSInterface(MainActivity.this),"JSInterface"); /* at webivew not brower*/ wv_test.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { return true ; } }); wv_test.loadUrl("file:///android_asset/JSInterface.html"); //wv_test.loadUrl("http://127.0.0.1:8080/JSInterface.html"); }
@Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { String url = request.getUrl().toString(); if (view instanceof AbstractWebKit) { boolean flag = false; if (interceptor != null) { flag = interceptor.shouldOverrideUrlLoading((AbstractWebKit) view, url); } if (flag) { return true; } } String lowurl = url.toLowerCase(); if (lowurl.startsWith("http:") || lowurl.startsWith("https:")) { view.loadUrl(url, headers != null ? headers.generateHeaders() : null); return true; } } return true; }
@SuppressLint("SetJavaScriptEnabled") @Override protected void onPrepareWebView(WebView webView) { super.onPrepareWebView(webView); webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { return false; // let the web view handle the url } }); webView.getSettings().setJavaScriptEnabled(true); // https://labs.mwrinfosecurity.com/blog/webview-addjavascriptinterface-remote-code-execution/ // FIXME: 2016/9/20 fix it later webView.addJavascriptInterface(new JsInterface(this), getString(R.string.web_image_click_target)); // http://blog.csdn.net/u013107656/article/details/51729398 webView.removeJavascriptInterface("searchBoxJavaBridge_"); webView.removeJavascriptInterface("accessibilityTraversal"); webView.removeJavascriptInterface("accessibility"); webView.setOnTouchListener(this); }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_webview); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); setupActionBar(); Intent webViewIntent = getIntent(); String url = webViewIntent.getStringExtra(EXTRA_URL); webView = findViewById(R.id.webview); webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { return false; } }); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webView.loadUrl(url); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = (WebView) findViewById(R.id.web_view); webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { return super.shouldOverrideUrlLoading(view, request); } }); webView.loadUrl("http://www.baidu.com"); }
@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); }
@TargetApi(Build.VERSION_CODES.M) @Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { super.onReceivedError(view, request, error); Crashlytics.log(5, "KolibriWebView", "onReceivedError() called with: request = [" + request + "], error = [" + error + "]"); // We ignore errors regarding assets loading, // so in this case we check if the request url and webview url are same if (request.getUrl().toString().equals(view.getUrl()) || request.isForMainFrame()) { for (KolibriWebViewClient webClient : webClients) { webClient.onReceivedError(view, request, error); } } }
@Override protected void initListener() { mFab.setOnClickListener(v -> SnackbarUtil.show(this, "喜欢就点个star吧!")); mWeb.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { view.loadUrl(request.getUrl().toString()); return true; } }); }
@Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { super.onReceivedError(view, request, error); String errorHtml = "<html><body><h2>找不到网页</h2></body></html>"; view.loadDataWithBaseURL(null, errorHtml, "text/html", "UTF-8", null); }
@Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { if (AgentWebUtils.isOverriedMethod(mWebViewClient, "onReceivedError", WEBVIEWCLIENTPATH + ".onReceivedError", WebView.class, WebResourceRequest.class, WebResourceError.class)) { super.onReceivedError(view, request, error); // return; } if (request.isForMainFrame()) { onMainFrameError(view, error.getErrorCode(), error.getDescription().toString(), request.getUrl().toString()); } LogUtils.i(TAG, "onReceivedError:" + error.toString()); }
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { // LogUtils.i(TAG,"this:"+this+" wrapper:"+this.mWebViewClient); if(mWebViewClient!=null){ return mWebViewClient.shouldOverrideUrlLoading(view,request); } return super.shouldOverrideUrlLoading(view, request); }
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { if(mWebViewClient!=null){ return mWebViewClient.shouldInterceptRequest(view,request); } return super.shouldInterceptRequest(view, request); }
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { if(mWebViewClient!=null){ mWebViewClient.onReceivedError(view,request,error); return; } super.onReceivedError(view,request,error); }
public void onReceivedHttpError( WebView view, WebResourceRequest request, WebResourceResponse errorResponse) { if(mWebViewClient!=null){ mWebViewClient.onReceivedHttpError(view,request,errorResponse); return; } super.onReceivedHttpError(view,request,errorResponse); }
/** * Fires in cases where the webview cannot even load (e.g. no network) */ @TargetApi(Build.VERSION_CODES.M) @Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { onReceivedError(view, error.getErrorCode(), error.getDescription().toString(), request.getUrl().toString()); }
/** * 加载资源 * 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; } }
/** * 重定向或者A标签 * 7.0+系统支持 * * @param view * @param request * @return */ @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { String url = request.getUrl().toString(); if (request.isRedirect()) { loadPage.forwardUrl(view, url); } } return super.shouldOverrideUrlLoading(view, request); }
@Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { LogUtils.d("savor:webview "+error.getDescription()); isLoadError = true; if (updateProgressListener!=null){ updateProgressListener.loadHttpError(); } }
@Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { super.onReceivedError(view, request, error); isLoadError = true; if (updateProgressListener!=null){ updateProgressListener.loadHttpError(); } }
@Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { if(request.getUrl().toString().startsWith("http") || request.getUrl().toString().startsWith("https")){ return super.shouldOverrideUrlLoading(view,request); } Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(request.getUrl().toString())); startActivityForResult(i,RESULT_LOGIN); return true; }
@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()); }
@TargetApi(Build.VERSION_CODES.N) @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { if (mCustomWebViewClient!=null){ boolean ret = mCustomWebViewClient.shouldOverrideUrlLoading(view,request); if (ret){ return true; } } view.loadUrl(request.getUrl().toString()); return true; }
@Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { if (mCustomWebViewClient!=null){ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { mCustomWebViewClient.onReceivedError(view, request, error); } return; } super.onReceivedError(view, request, error); }
@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); }
@SuppressLint("NewApi") @Override public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { if (request != null && request.getUrl() != null) { try { if (!GlobalConfig.isExcludeHost(request.getUrl().getHost())) { return getResponseFromUrl(new URL(request.getUrl().toString())); } } catch (Throwable e) { e.printStackTrace(); } } return null; }
private void initView() { mProgressBar = (ProgressBar) findViewById(R.id.mProgressBar); mWebView = (WebView) findViewById(R.id.mWebView); Intent intent = getIntent(); String title = intent.getStringExtra("title"); final String url = intent.getStringExtra("url"); L.i("url:" + url); //进行加载网页的逻辑 //支持JS mWebView.getSettings().setJavaScriptEnabled(true); //支持缩放 mWebView.getSettings().setSupportZoom(true); mWebView.getSettings().setBuiltInZoomControls(true); //接口回调 mWebView.setWebChromeClient(new WebViewClient()); //加载网页 mWebView.loadUrl(url); //本地显示 mWebView.setWebViewClient(new android.webkit.WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { view.loadUrl(url); //我接受这个事件 return true; } }); }
@RequiresApi(Build.VERSION_CODES.N) @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { String url=request.getUrl().toString(); if (!placement.getCreativeUrl().equals(url)) { Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); context.startActivity(i); return true; } return false; }
@TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public WebResourceResponse shouldInterceptRequest(WebView webView, WebResourceRequest webResourceRequest) { String url = null != webResourceRequest.getUrl() ? webResourceRequest.getUrl().toString() : null; if (!TextUtils.isEmpty(url) && url.startsWith(LOCAL_FILE_SCHEMA)) { return getLocalResource(url); } if (null != _webViewDelegate && null != _webViewDelegate.get()) { return _webViewDelegate.get().shouldInterceptRequest(webView, webResourceRequest); } return super.shouldInterceptRequest(webView, webResourceRequest); }
private static WebResourceRequest createRequest(final String url, final boolean isForMainFrame) { return new WebResourceRequest() { @Override public Uri getUrl() { return Uri.parse(url); } @Override public boolean isForMainFrame() { return isForMainFrame; } @Override public boolean isRedirect() { return false; } @Override public boolean hasGesture() { return false; } @Override public String getMethod() { return null; } @Override public Map<String, String> getRequestHeaders() { return null; } }; }
@TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public WebResourceResponse shouldInterceptRequest(WebView view, @NonNull WebResourceRequest request) { if (mAdBlock.isAd(request.getUrl().toString())) { ByteArrayInputStream EMPTY = new ByteArrayInputStream("".getBytes()); return new WebResourceResponse("text/plain", "utf-8", EMPTY); } return super.shouldInterceptRequest(view, request); }
@Override public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) { isErrorReceived = true; if (!isRedirect) { mWebView.stopLoading(); mAppAuthWebViewListener.showConnectionErrorLayout(); mWebView.setVisibility(View.INVISIBLE); } super.onReceivedHttpError(view, request, errorResponse); }
@Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { super.onReceivedError(view, request, error); // Log the error message for debugging Log.d(getClass().getSimpleName(), error.toString()); // Display toast message describing error details String errorDetails = String.valueOf(error.getDescription()); Toast.makeText(mContext, errorDetails, Toast.LENGTH_LONG).show(); }