簡體   English   中英

Webview ShouldOverrideUrlLoading未調用

[英]Webview ShouldOverrideUrlLoading not called

我有一個像下面給定代碼的webview,我試圖在webview內登錄時捕獲重定向URL,所以我使用了ShouldOverrideUrlLoading方法,但是控件從未出現在此方法內。

我已經閱讀了與此相關的其他答案,並嘗試了一些操作,例如使用webView.loadDataWithBaseURL,webview變為空白,並嘗試使用chromeclient並捕獲url,但這僅在首次加載時有效,而在重定向時不起作用。

可能是什么問題?

    WebView webView = (WebView) findViewById(R.id.loginwebview);
    webView.getSettings().setLoadsImagesAutomatically(true);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setAllowContentAccess(true);

    webView.loadUrl("https://www.xfinityprepaid.net/CustomerActivation/CustomerActivation");

    webView.getSettings().setUseWideViewPort(true);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.clearView();
    webView.setHorizontalScrollBarEnabled(false);
    webView.getSettings().setAppCacheEnabled(true);
    webView.getSettings().setDatabaseEnabled(true);
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
        webView.getSettings().setDatabasePath("/data/data/" + this.getPackageName() + "/databases/");
    }
    webView.setVerticalScrollBarEnabled(false);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setDisplayZoomControls(false);
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setPluginState(WebSettings.PluginState.OFF);
    webView.setScrollbarFadingEnabled(false);
    webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
    webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
    webView.setWebViewClient(new WebViewClient());
    webView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
    webView.setInitialScale(1);

    webView.setWebViewClient(new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
             {
                Log.d("url",url);
                if (url.contains("account-secured/dashboard")){
                    startActivity(new Intent(LoginActivity.this,MainActivity.class));
                    finish();
               }else {
                    view.loadUrl(url);
                }
            }


            return false;
        }

    });

如果您的鏈接是本地鏈接,請嘗試添加app://前綴或等效名稱。

Android 4.4中的遷移到WebView

例如,對於這樣的鏈接,新的WebView可能不會調用您的shouldOverrideUrlLoading()方法:

 <a href="showProfile">Show Profile</a> 

您可以使用如下自定義方案來代替在鏈接中使用簡單的字符串:

 <a href="example-app:showProfile">Show Profile</a> 

當我將鏈接從<a href="#4">更改為<a href="#4">時,這對我<a href="app://4">

class MyWebViewClient(val activity: AppCompatActivity) : WebViewClient() {
    override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
        activity.findViewById<RadioButton>(AMAinActivity.primaryButtons[3]).performClick()
        return true
    }
}

請注意,即使該方法已棄用,該方法也能正常工作。

要攔截您的鏈接,請指定具有完整路徑的鏈接,即<a href="https://www.xfinityprepaid.net/CustomerActivation/CustomerActivation" :-

嘗試覆蓋onReceivedSslError。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM