2011-02-05 9 views
4

私はAndroidのWebViewのゲートウェイによってJavaScriptからJavaコードを呼び出すためにとして意図されたJavaコードの一部を書かれています。JavaScriptにAndroidのWebViewのからのデータを渡す

webView = (WebView) findViewById(R.id.captchaView); 
WebSettings ws = webView.getSettings(); 
ws.setJavaScriptEnabled(true); 
webView.loadUrl("https://google.com/"); 

webView.setWebViewClient(BrowserHandler); 
webView.addJavascriptInterface(new IJavascriptHandler(), "cpjs"); 

WebViewClient BrowserHandler = new WebViewClient() { 
    @Override 
    public void onPageFinished(WebView view, String url) { 
     view.loadUrl("javascript:window.cpjs.onPageLoaded(document.body.innerHTML);void(0);"); 
    } 
}; 

final class IJavascriptHandler { 
    IJavascriptHandler() { 
    } 

    public void onPageLoaded(String html) { 
     // this is called from JS 
     Toast t = Toast.makeText(getApplicationContext(), "Yes", 2000); 
     t.show(); 
    } 
} 

ウェブページの読み込みのための上記のコードのチェックは、ページのロードが完了したら、それは私がページから必要なものを運ぶことができるので、それは、Javaから露出されたJavaScript関数を呼び出します。

これ

は、それが単にページを数秒ごとに更新されている何をするか期待通りに機能していません。私はここで何が間違っているのか分からないのですか?

+0

あなたは私の更新されたコードを送ってくださいます。事前に感謝 –

答えて

2

さて、あなたは何をしたかではなく、奇妙されているものがたくさんあります。

  • Javaからは、JavaにコールバックするためのJavaが起動しています。あなたはこれが安全であると仮定しています。

  • あなたはそれがAndroidのブラウザ、私がチェックした最後の時間に遭遇したときにリダイレクトを実行します、Googleのホームページを、ロードしています。

  • Toastを表示しようとしていますが、そのコードがメインのアプリケーションスレッドで実行されるかどうかはわかりません。

+0

あなたは正しいです。トーストはUIスレッド上で実行されます。私はちょうどWebViewのバグであることを知っている必要があります。なぜなら、これは動作していないからです。 Android用Googleグループにスレッドがあります。バージョン2.3から2.2にエミュレータをアンインストールできますか? – Neutralizer

関連する問題