0

値を返すJSがあります

function sendDisplay()
{
 var dis = alert(reader.dom.find('controls_contents_container').style.display);
 return dis;
}

アンドロイドでは戻り値を設定して、アンドロイドでifelseステートメントを作成できるようにします

public class MainActivity extends DroidGap {

   @Override
    public void onCreate(Bundle savedInstanceState) {
        CookieManager.setAcceptFileSchemeCookies(true);
        super.onCreate(savedInstanceState);
        super.setIntegerProperty("splashscreen", R.drawable.cover);
        super.loadUrl("file:///android_asset/www/index.html",1500);   

    }


    @Override
    public void onBackPressed() {
        super.loadUrl("javascript:alert(sendDisplay())"); 


    }


}

loadUrlメソッドでアラートを出すと、JSからの値が表示されます。しかし、私はその値をアンドロイド変数に設定する方法を知りません。

TQ

4

1 に答える 1

2

JavascriptコードのAndroidコードへのバインドに関するGoogleのガイドセクションをご覧ください。ここに短い要約も投稿します:

まず、Javaクラスを設定する必要があります。

public class JavaScriptInterface {
    Context mContext;

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

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

次に、そのクラスのインスタンスをjavascriptインターフェイスとしてWebViewに追加する必要があります。

WebView webView = (WebView) findViewById(R.id.webview);
webView.addJavascriptInterface(new JavaScriptInterface(this), "Android");

最後に、javascriptから「Android.showToast(whatever)」を使用して呼び出すか、Javaコードからそのjavascriptを呼び出すことができます。

loadUrl("javascript:Android.showToast(whatever)");

トーストメッセージを表示する場合、これは少し冗長です。しかし、うまくいけば、あなたはアイデアを得るでしょう。

于 2012-11-08T16:48:03.177 に答える