2011-03-02 84 views
1

我有一個webview應用程序,它監聽點擊並將它們與預定義的字符串進行比較,以檢查是否需要掛接到我的Java中。Webview資源偵聽器不捕獲加載的資源

我開始明顯:

shouldOverrideUrlLoading 

,並在那裏做線沿線的東西:

if(url.contains(myhook)){ 
    //do what i need 
} 

這是罰款時,其處理在網頁視圖用戶點擊次數。但現在我處於需要捕捉資源加載url的地步。所以我找到了'onLoadResource',並認爲這是我想要的 - 但我無法得到它的工作。

我一般設置:

private String myhook = "http://domain.com/listener"; 
{ ... } 
@Override 
public void onLoadResource(WebView view, String url) 
    { 
    if(url.contains(myhook)){ 

     //do my stuff!! 

     mWebView.loadUrl("http://domain.com/success.html"); 
    } 
    else 
    { 
     super.onLoadResource(view, url); 
    }   
} 

我的網頁代碼(index.html的):

{...} 
<a href="http://domain.com/processing.php" >sign up</a> 
{...} 

這就要求我的PHP處理網頁:

<?php 
{...} 
header('Location: http://domain.com/listener/?data=#data#'); 
?> 

但我的鉤永遠不會這樣調用success.html永遠不會被加載,我的「做我的東西」永遠不會發生。它試圖發送請求到http://domain.com/listener/?data=#data#這不存在(我只是用它來抓#數據#)。

需要注意的一件事是我的「onLoadResource」在我的private class TestWebViewClient extends WebViewClient {之內,就在我的@Override public boolean shouldOverrideUrlLoading之前 - 不確定這是否正確。

任何幫助或其他方法,將不勝感激。

+0

一個供參考其他任何人這個問題:我能得到上述方法的工作(即具有onLoadResource抓住我的鉤),當用戶點擊一個鏈接,然後去處理頁面,並得到了轉發到我的鉤。但是,如果處理頁面是從表單提交發起的(這讓我難倒了好幾天),那麼它就不適用了。所以我做了一個小小的JavaScript函數,而不是使用表單提交,我做了一個。 – bMon 2011-03-09 05:24:03

回答

2

onLoadResource()不會觸發,shouldOverrideUrlLoading()也不會觸發在這種情況下,這有點令人失望,但我發現在WebView中,HTML頁面內的所有請求都不會觸發(如圖像,CSS等) )。你有兩個選擇:

  1. 插入JavaScript在HTML該知道如何與Android的Java通信。 http://developer.android.com/reference/android/webkit/WebSettings.html#setJavaScriptEnabled(boolean
  2. 預處理您的html頁面,並用您需要的東西替換請求所需資源的所有部分。

我曾經做過一個需要緩存圖片的RSS閱讀器。我使用(2)方法並將所有img源替換爲本地資源。它的工作原理,但相當重的作品,雖然。那時我只是使用Simple Regex來做替換,但是也可以使用像HTMLTidy這樣的庫來幫助你。

+0

我明白你的意思,但我有點困惑,因爲我實際上能夠讓我的上面的代碼工作。我在代碼中的其他地方有一個type-o。這是否有理由按照我上面描述的方式工作,還是你認爲它是一種僥倖?謝謝你的幫助。 – bMon 2011-03-02 23:38:02

+0

在對這些東西進行測試期間,onLoadResource()或shouldOverrideUrlLoading()僅在用戶「點擊」某些鏈接時才起作用。但是,如果您的內容正在請求其他內容,例如你加載一個html頁面,並且該頁面包含其他圖像,這些圖像上的請求將不會觸發。 – xandy 2011-03-03 07:25:17

+0

你知道你的第一個建議的方法有什麼樣的教程嗎?謝謝。 – bMon 2011-03-04 19:08:37