2012-10-27 56 views
1

在一個宏達電Evo運行的是Android 2.3.5,overrriden shouldOverrideUrlLoading()不會被調用。完全相同的代碼在運行Android 2.3.6的三星Galaxy上運行良好。安卓:覆蓋shouldOverrideUrlLoading不工作的HTC設備

到目前爲止,我曾嘗試重寫onPageStarted()onPageFinished()。我沒有看到這些方法中的URL。

我的目的是爲存在於頁mailto:tel:鏈接提供的自定義活動。任何想法,如何我可以使這項工作,如果shouldOverrideUrlLoading()從未被擊中?

我已經看着計算器上類似的問題和其他地方,都沒有發現任何有關。

+0

[從花(當用戶點擊http://stackoverflow.com/questions/9670136/shouldoverrideurlloading-gets-called-only-for-some-網頁)。這個問題似乎是js函數setTimeout(fn,millis)。您已經編寫了一個覆蓋它的js函數,然後在您的Android代碼中使用JavascriptInterface重新創建此函數的行爲,因爲它最適合您的應用程序。這取決於你的應用程序功能的很多工作,但它的工作原理。這個想法是重寫setTimeout,然後調用一個方法,從android代碼睡覺的線程多少millis在初始調用setTimeout在js .. –

+0

感謝您的評論。我會試一試;但JavaScript可能不是一個可接受的解決方案。我也看着http://stackoverflow.com/questions/5116909/how-i-can-get-onclick-event-on-webview-in-android – Chaitanya

回答

2

shouldOverrideUrlLoading()並不只適用於某些版本的Android的工作,如2.1或2.3.6,但它工作正常2.3.3,2.3.5,4.0.2或4.0.3。

如果您需要處理一下關於web視圖鏈接,您必須使用shouldOverrideUrlLoading()方法。如果您只需處理加載網頁,則應使用onPageStarted()

這是Android開發者聯繫:https://developer.android.com/guide/webapps/migrating.html

  • 注:例如:我們在網頁2個鏈接。

    1. <a href="http://www.w3schools.com/">Visit W3Schools!</a>
    2. <a href="http://www.w3schools.com/" target="_blank">Visit W3Schools!</a>

shouldOverrideUrlLoading()只呼籲鏈接 「1」,當用戶點擊。 它不叫上鍊接「2

public void onPageStarted(WebView view, String url, Bitmap favicon) { 

    if (url.contains("success")) { 
     Intent intent = new Intent(WebviewActivity.this, OrderConfirmActivity.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(intent); 
    } else { 
     super.onPageStarted(view, url, favicon); 
    } 
} 
+0

我不明白爲什麼'if(url.contains (「成功」))有效。你能解釋一下嗎? – acrespo

+0

「成功」只是硬編碼。例如:您的網址:https://google.com/login/success。 –