2011-06-22 7 views
1

javascriptInterfaceをセットアップして、アプリケーション内でpaiement操作(webviewで行われる)の結果を取得し、適切なアクティビティを表示できるようにしました。 奇妙なことに、いくつかのデバイス(2.1)では問題なく動作しますが、私は(2.2)とDesire(2.3.3)がある銀河のS IIでは動作しません。JavascriptInterfaceがバージョンで動作しない> 2.1

私はこれがライブラリの問題であるのか、私のアプリケーションの誤解であるのか疑問に思っています。ここで

は私のコードです:

@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(); 
     }   
    } 
} 

Additionnaly、結果のHTMLページで使用されるコードは次の通りである:

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

答えて

0

のように思えます問題はサーバー側で、javascript fuを持たない別のページの一部のデバイスをリダイレクトしますnction。 (自分のサーバーのテストページで正常に動作し、問題は全くありませんでした)

関連する問題