【问题标题】:How To Detect Redirects in Android Web view如何在 Android Web 视图中检测重定向
【发布时间】: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");        

    }


}

【问题讨论】:

    标签: javascript android android-studio url webview


    【解决方案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]

    【讨论】:

    【解决方案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来获取所有重定向信息
    猜你喜欢
    • 2019-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 2012-10-25
    • 1970-01-01
    • 2018-08-30
    相关资源
    最近更新 更多