I also had problems intercepting request headers in the WebView myWebView .
At first I tried to do this using the WebViewClient setting for myWebView .
myWebView.setWebViewClient(new WebViewClient() { @Override @TargetApi(Build.VERSION_CODES.LOLLIPOP) public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { Log.v("USERAGENTBROWSE", "shouldOverrideUrlLoading api >= 21 called"); //some code return true; } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Log.v("USERAGENTBROWSE", "shouldOverrideUrlLoading api < 21 called"); //some code return true; } });
But the shouldOverrideUrlLoading(...) method has never been called. And I really have no idea why.
Then I discovered that there is a way to intercept some common headers such as "User-Agent" , "Cache-Control" , etc.:
myWebView.getSettings().setUserAgentString("your_custom_user_agent_header"); myWebView.getSettings().setCacheMode(int mode); ...
Hope this can help someone.
Anton Prokopov
source share