JavascriptInterface不适用于版本> 2.1

时间:2011-06-22 13:36:52

标签: javascript android bind android-2.2-froyo

我设置了一个javascriptInterface,它允许我在我的应用程序中检索一个paongment操作的结果(在webview中完成),然后显示相应的活动。 奇怪的是,它在某些设备上运行没有任何问题(全部在2.1中),但不适用于我拥有的星系S II(2.2)和欲望(2.3.3)。

我想知道这是来自图书馆的问题还是对我的应用程序的一些误解。

这是我的代码:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    webview.getSettings().setUserAgentString(iphone_user_agent);
    webview.getSettings().setJavaScriptEnabled(true);

    webview.addJavascriptInterface(new JavaScriptInterface(this), "android");

    webview.loadUrl(url_paiement+"?iphone_idsession="+xml.getSession().getIdsession());
}

我的班级:

final class JavaScriptInterface {
    Context mContext;

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

    /**
     * Function binded to webview javascript
     * Called via : window.android.sendResult('result');
     */
    public void sendResult(String result) {

        Log.d("JavascriptInterface","OK");

        //Error message depending on result
        if(result.equals("OK")){
            Toast.makeText(mContext, paiement_success, Toast.LENGTH_LONG).show();
            BaseActivity.paiment_ok = true;
            finish();
        }else if(result.equals("NOK" )){
            Toast.makeText(mContext, paiement_error, Toast.LENGTH_LONG).show();
            BaseActivity.paiment_error = true;
            finish();
        }else{ 
            Toast.makeText(mContext, paiement_error_server, Toast.LENGTH_LONG).show();
            BaseActivity.paiment_error = true;
            finish();
        }           
    }
}

另外,生成的HTML页面中使用的代码如下:

<body onLoad="window.android.sendResult('OK or NOK here');">

1 个答案:

答案 0 :(得分:0)

似乎问题出在服务器端,它将某些设备重定向到不具有javascript功能的不同页面上。 (我在自己的服务器上的测试页面上成功测试过,绝对没有问题)

相关问题