2

質問があります。HTML5 ページは Android のネイティブ コンポーネントとやり取りできますか?

私が達成しようとしているのは、コンテンツのリストを表示する HTML5 ページです。コンテンツが到着したことを知らせる通知を作成したい。

これを行う方法は、webview を使用してそこに HTML5 コンテンツを表示することですが、ネイティブ android を使用してアクセスできる通知バーを介して一部のコンテンツが到着したことをユーザーに通知できるように、webview からコールバックを取得する方法です。コーディング?

Androidで通知を作成する方法とWebViewを作成する方法はすでに知っています.html5ページからAndroidコンポーネントにデータを送信する方法、またはその逆の方法を見つける必要があります。

これは達成可能ですか、それとも野心的すぎますか?

4

1 に答える 1

3

はい、JavaScript インターフェースを介してこれを実現できます。これを介して、JavaScript はアタッチしたインターフェースで定義された関数を呼び出すことができます。

http://developer.android.com/guide/webapps/webview.html

あなたのActivity

WebAppInterface mInterface;

public void onCreate() {
    mInterface = new WebAppInterface(this);
    mWebView.addJavascriptInterface(mInterface, "MyAndroidInterface")
}

次に、呼び出し先のオブジェクトを定義します。

public class WebAppInterface {
    Context mContext;

    /** Instantiate the interface and set the context */
    WebAppInterface(Context c) {
        mContext = c;
    }

    /** Show a toast from the web page */
    @JavascriptInterface
    public void showToast(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }
}

これで、次のJavascriptことができます。

MyAndroidInterface.showToast("hello world");

nativeからへの帰り道Javascriptは、 経由で行うことができますJavascript injection。で関数を定義Javascript:

function helloBack(param) {
} 

今、あなたは呼び出すことができますmWebView.loadUrl("javascript:helloBack(hi);");

于 2013-05-01T14:29:41.367 に答える