我设置了一个javascriptInterface,它允许我检索应用程序内的ie结操作(在Web视图中完成)的结果,然后显示适当的活动。
足够奇怪的是,它在某些设备上(在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');">
最佳答案
似乎问题出在服务器端,它将某些设备重定向到不具有javascript功能的其他页面上。
(我已经在自己的服务器上的测试页上成功进行了测试,绝对没有问题)
关于javascript - JavascriptInterface在版本> 2.1上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6440771/