2012-03-31 78 views
0

我有一個應用程序,打開瀏覽器給用戶給定的網址。這應該指向一個沒有認證的特定登錄頁面。是否有可能檢測到用戶單擊登錄時轉到會員頁面,以後我可以解析HTML源代碼?我只是尋找某種頁面變化檢測。使用Android瀏覽器 - 檢測頁面變化

編輯:我現在使用WebView。這裏是新的WebView活動課的一部分,迄今:

mWebView = (WebView) findViewById(R.id.webview); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.loadUrl("theurl(removed)"); // Removed url for StackOverflow 
    mWebView.loadUrl("javascript:document.getElementById('sid').value = 'name';"); // Supposed to autofill a particular input with id 'sid' 

試圖在頁面上輸入的第一個變化值,都無濟於事。

回答

1

是否有可能檢測到用戶單擊登錄時轉到會員頁面,以後我可以解析HTML源代碼?

不使用獨立瀏覽器。這將是一個安全和隱私的噩夢。

歡迎您將WebView小部件嵌入到您的應用中,讓用戶通過它登錄,然後使用JavaScript從任何生成的頁面中獲取數據。

+0

我加了我的WebView細節。請看看編輯!你能先告訴我我在做什麼錯誤的輸入? – 2012-03-31 21:01:03

+1

@MarkLyons:您正在調用第二個'loadUrl()'太快,因爲第一個'loadUrl()'肯定還沒有完成。 'loadUrl()'是異步的。 – CommonsWare 2012-03-31 21:27:54

+0

所以我應該使用某種功能來等待頁面完全加載? – 2012-03-31 21:29:04

1

首先,你應該打開URL您的應用程序中,只需使用的WebView使用自定義WebViewClient:

WebView myWebView = (WebView) findViewById(R.id.mywebview); 
CustomWebViewClient webViewClient = new CustomWebViewClient(); 
myWebView.setWebViewClient(webViewClient); 

你用它打開你的網址:

myWebView.loadUrl("http://myurl.com"); 


    private class CustomWebViewClient extends WebViewClient { 

    @Override 
    /** 
    * I assume the url changes when the user clicks login, so parse the url and do the right stuff 
    * I look for a fictitious sessionkey here 
    */ 
    public void onLoadResource(WebView view, String url) { 
     try { 
      String sessionKey = URLDecoder.decode(view.getUrl().split("session_key=")[1], "UTF-8"); 
      if (sessionKey == 1337) 
       { 
       ... 
       }       
      } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
     super.onLoadResource(view, url); 
    } 

    @Override 
    /** 
    * Take control over the loaded url so the url is open in the current Webview and not with the default browser of Android 
    */ 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return false; 
    } 
} 
+0

我已經開始在回答問題之前使用webview。我認爲這會更有效地做我現在發現的可能性:我可以在webview中加載url,然後根據之前在app中給出的信息更改輸入。我也讀過,可以自動爲他們點擊登錄按鈕。在新頁面加載完成後(在登錄按鈕onclick後)獲取html源代碼會更高效嗎? – 2012-03-31 21:04:54