如何在 Android Web 视图中检测重定向
Posted
技术标签:
【中文标题】如何在 Android Web 视图中检测重定向【英文标题】:How To Detect Redirects in Android Web view 【发布时间】:2017-02-08 14:48:22 【问题描述】:经过多次重定向后,url 最终出现在 Webform 中我如何退出 webview ? 有没有一种方法可以检测网页视图中的 html 元素,例如页面中的按钮。我不能在这里使用 javascript,因为我不拥有这些网站
public class ProductionWebView extends Activity
private WebView webView;
String url ="https://www.google.lk/?gws_rd=ssl";
@SuppressLint("JavascriptInterface")
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.production_webview);
webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setLoadsImagesAutomatically(true);
webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
webView.loadUrl(url);
//ws.setJavaScriptEnabled(true);
webView.addJavascriptInterface(new Object()
public void performClick()
// Deal with a click on the OK button
, "Next");
webView.addJavascriptInterface(new Object()
public void performClick()
, "Authorize");
【问题讨论】:
【参考方案1】:您可以使用 webClient 并实现 shouldOverrideUrlLoading 在 WebView 加载它们之前拦截所有 url。
mWebView.setWebViewClient(new WebViewClient()
@Override
public boolean shouldOverrideUrlLoading(WebView webView, String url)
// Here put your code to exit
// return true; //This indicates WebView to NOT load the url;
// return false; //Allow WebView to load url
);
【讨论】:
感谢您的回复。如果 Web 视图有多个重定向,您如何使用此代码跟踪它们?我尝试了代码,但现在甚至没有加载第一个 url @SheshanGamage 你返回 false 了吗? 我使用了这个块 ` webView.setWebViewClient(new WebViewClient() @Override public boolean shouldOverrideUrlLoading(WebView webView, String url) if(webView.getUrl().contains("code")) 返回真;否则返回假;); ` 但它现在不加载它给我假并且不加载任何东西 @SheshanGamage 您已经将 Url 作为参数。尝试使用它.. 问题是方法dosent迭代:(它只是第一次工作。【参考方案2】:如果你想操纵 URL,那么覆盖这个:
public boolean shouldOverrideUrlLoading (WebView view, String url)
view.loadUrl(request.getUrl().toString());
return true;
[WebViewClient Reference]
【讨论】:
请查看我的回答中提到的链接@佘山游戏 检查这个***.com/a/5125620/2826147我认为你需要什么。@Sheshan Gamage【参考方案3】:你需要创建一个这样的方法
webview.setWebViewClient(new WebViewClient()
public boolean shouldOverrideUrlLoading(WebView view, String url)
// do your action here
view.loadUrl(url);
return false; // then it is not handled by default action
);
【讨论】:
如果 Web 视图有多个重定向,您如何使用此代码跟踪它们?我试过了,但它现在甚至没有加载第一个 url 你可以在shouldOverrideUrlLoading方法中输入log来获取所有重定向信息以上是关于如何在 Android Web 视图中检测重定向的主要内容,如果未能解决你的问题,请参考以下文章
Android 通过验证用户名和密码使用重定向 url 在 Web 视图中查看 .pdf 文件