2012-03-31 24 views
0

URLを指定したユーザーにブラウザを開くアプリがあります。これは、認証のない特定のログインページを指しているはずです。後でユーザーがログインをクリックしてメンバーページに移動したときに、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の変化値にしようとしています。

答えて

1

ユーザーがログインして、後でHTMLソースを解析できるメンバーページに移動したことを検出することは可能ですか?

スタンドアロンブラウザを使用していません。それはセキュリティとプライバシーの悪夢です。

あなたのアプリにWebViewウィジェットを埋め込み、ユーザーにログインさせてからJavaScriptを使って結果ページからデータを取得することもできます。

+0

を私はWebViewの詳細を追加しました。編集を見てください!最初に私が入力に間違っていることを教えてもらえますか? –

+1

@ MarkLyons:最初の 'loadUrl()'がまだ行われていないので、2番目の 'loadUrl()'をあまりにも早く呼び出しています。 'loadUrl()'は非同期です。 – CommonsWare

+0

ページが完全に読み込まれるまで何らかの機能を使用して待機する必要がありますか? –

1

まず、あなたは、単にカスタムWebViewClientでのWebViewを使用することによって、あなたのアプリケーション内のURLを開く必要があります。

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

あなたはそれをあなたのURLを開きます。

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ソースを取得する方が効率的でしょうか? –

関連する問題