5

javascriptとandroidの間で値を渡したり返したりする電話用のプラグインを作成したいと思います。

誰かがこれを行う方法について何かアイデアを提案できますか?

4

2 に答える 2

14

実際、これはそれほど難しいことではありません。ここでは、ページ内のjavascriptからネイティブコードを呼び出す方法とその逆の方法を示します。

Webビュー内からのネイティブコードの呼び出し
Webビューを作成するときに、javascriptインターフェイス(基本的に、メソッドがWebビューのjavascriptを介して呼び出されるように公開されるjavaクラス)を追加します。

JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");

javascriptインターフェースクラス自体の定義(これは私の別の答えから取った模範的なクラスであり、ネイティブインテントでビデオを開きます)

public class JavaScriptInterface {
    private Activity activity;

    public JavaScriptInterface(Activity activiy) {
        this.activity = activiy;
    }

    public void startVideo(String videoAddress){
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.parse(videoAddress), "video/3gpp"); // The Mime type can actually be determined from the file
        activity.startActivity(intent);
    }
}

ここで、このコードをページのHTMLから呼び出したい場合は、次のメソッドを提供します。

<script>
    function playVideo(video){
        window.JSInterface.startVideo(video);
    }
</script>

簡単ですね。

ネイティブコードからのjavascriptコードの呼び出し
これも簡単です。WebViewにロードされたHTMLのコードで、javascript関数が定義されているとします。

<script>
    function function(){
        //... do something
    }
</script>

次に、次のようなネイティブコードでWebViewを介してこの関数を呼び出します。

webView.loadUrl("javascript:function()");
于 2012-01-24T11:55:50.487 に答える
0

これは、PhoneGapプラグインを作成するためのチュートリアルです。また、 ChildBrowserプラグインの説明は特に優れています。

于 2012-01-25T21:30:44.807 に答える