0

私は、Webビューでjavascriptを呼び出し、jsがJavaメソッドをコールバックする必要がある小さなアプリを開発しています。私の目標は

- - - - - - - 結果

印刷されていますが、私はそれを見ません!私のコードは次のように簡単です:

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings.PluginState;
import android.webkit.WebView;

public class MainActivity extends Activity {

    private WebView wv;

    private Object obj = new Object() {
        @JavascriptInterface
        public void onLogin() {
            System.out.println("------------- result ");
        }
    };

    private String jsString = "var checkLogin = function() {" +
            "window.AndroidJSBridge.onLogin();" + 
        "}; " + 
        "checkLogin();";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        System.out.println("------------- start");

        wv = (WebView) findViewById(R.id.login_webview);
        wv.addJavascriptInterface(obj, "AndroidJSBridge");
        wv.getSettings().setPluginState(PluginState.ON);
        wv.getSettings().setJavaScriptEnabled(true);
        wv.loadData("", "text/html", null);
        wv.loadUrl("javascript: " + jsString);
    }

}
4

1 に答える 1

0

まず、呼び出しを行う前に、webview がページの読み込みを完了していることを確認する必要があります。

wv.setWebViewClient(new WebViewClient() {
     public void onPageFinished(WebView view, String url)
        {
            view.loadUrl("javascript: " + jsString);
        }
    });

第二に、「ウィンドウ」は必要ありません。javascriptインターフェースを呼び出すには(これはテストしていませんが、私のコードでは必要ありません):

private String jsString = "var checkLogin = function() {" +
        "AndroidJSBridge.onLogin();" + 
    "}; " + 
    "checkLogin();";

それがうまくいくかどうか教えてください。

于 2013-10-30T16:43:47.940 に答える