2012-03-12 71 views
4

我正在使用shouldOverrideUrlLoading方法來爲多個客戶端個性化的應用程序。每個客戶端都有自己的網頁,希望加載到網頁視圖中。我的問題是這樣的:該應用完美適用於客戶端A和他的網頁,但不適用於客戶端B的網頁(與客戶端A無關)。正如我測試過的,不同的是,在客戶端B的情況下,在加載的內容中訪問webview的鏈接,shoulOverrideUrlLoading不起作用(永遠不會被調用),並且對於客戶端的網頁完美運行。另一件事是客戶的B網頁不能僅在一些Android版本上工作,如2.1或2.3.6,但它在2.3.3,2.3.5,4.0.2或4.0.3上正常工作。shouldOverrideUrlLoading僅針對某些網頁調用

所以這有點奇怪。如果你碰巧知道什麼,請幫忙!謝謝!:)

編輯:我注意到,當網頁不通過JavaScript加載請求的鏈接時它不會調用shouldOverrideLoading,並且它在JavaScript不使用時工作!但是當我設置webview.setJavaScriptEnabled(false)它的作品!我真的需要javascript來啓用我的應用程序,導致網頁通常使用JavaScript的其他東西,除了加載,所以我不能禁用它,只是因爲shouldOverrideUrlLoading不會被調用!

編輯2:更確切:

這一個工程和shouldOverrideUrlLoading被稱爲:

<p onclick="location.href='linkHere'"> 
     NewLink 
     <span class="icon-arrow"></span> 
</p> 

這一個不工作,shouldOverrideUrlLoading不會被調用:

<a class="link-inherit" href="linkHere"> 
     NewLink 
     <span class="icon-arrow"></span> 
</a> 
+0

也許幫助http://stackoverflow.com/questions/6738328/shouldoverrideurlloading-in-webview-for-android-not-running – 2012-03-12 15:48:18

+0

是啊..我看到了那篇文章。不完全是我的情況。感謝無論如何:) – user347187 2012-03-13 08:35:00

+0

我更新了我的答案!:) – user347187 2012-03-13 08:42:21

回答

3

解決方案shouldOverrideUrlLoading不叫

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); 
     } 
    } 
+1

???這對任何人都適用嗎?我沒有看到... Android是否附加了「成功」後綴或什麼?我在我的onPageStarted中打印了url參數,至少對我來說不是這種情況。 – acrespo 2016-01-29 14:59:45