2014-09-11 83 views
2

我第一次開發cordova插件,卡在以下問題中。AsyncTask裏面執行Cordova插件的方法不正常

我創建了一個擴展CorodvaPlugin的類並覆蓋了給定的execute方法。我想要的是在asynctask完成後臺任務之後,響應返回給JS,並且值顯示在HTML上,但是發生了什麼,有時會顯示值,有時候不會。任何幫助將不勝感激。

@Override 
public boolean execute(String action, JSONArray args, 
     CallbackContext callbackContext) throws JSONException { 
    try { 

     context = this.cordova.getActivity().getApplicationContext(); 
      this.mMyCallbackContext = callbackContext; 
      new WSCall().execute(); 
      PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT); 
      pluginResult.setKeepCallback(true); 
      mMyCallbackContext .sendPluginResult(pluginResult); 
      return true;  


    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     return false; 
    } 

} 

,並在異步任務執行後我做了這個

 @Override 
     protected void onPostExecute(String result) { 


      PluginResult result_; 
      if(groups!=null) 
       result_ = new PluginResult(PluginResult.Status.OK, groups); 
      else if(ret_msg!=null) 
       result_ = new PluginResult(PluginResult.Status.OK, ret_msg); 
      else 
       result_ = new PluginResult(PluginResult.Status.OK, ""); 

      result_.setKeepCallback(false); 
      mMyCallbackContext.sendPluginResult(result_); 
      pDialog.dismiss(); 

     } 

回答

1

Use this link 和無法返回執行方法正確,只返回Pluginresult。

+1

僅針對舊版Cordova的PluginResult?例如,在Cordova 5.1.1中,執行返回布爾值,而不是PluginResult – 2015-10-09 23:53:50