2013-03-09 23 views
5

नहीं चलाता है, मैं आईबीएम वर्कलाइट में कॉर्डोवा प्लगइन बनाने का प्रयास करता हूं।Cordova.exec फ़ंक्शन मूल फ़ंक्शन

जावास्क्रिप्ट:

HelloWorld = {  
    sayHello: function (success, fail, resultType) { 
     Cordova.exec( 
      success, 
      fail, 
      "HelloWorld", 
      "HelloWorld", 
      [resultType] 
    ); 
    } 
}; 

function callFunction() { 
    HelloWorld.sayHello(basarili, basarisiz, "sinan"); 
} 

जावा:

package com.Cordova1; 
import org.apache.cordova.api.CordovaPlugin; 
import org.json.JSONArray; 

import android.util.Log; 
public class HelloWorld extends CordovaPlugin { 
    public boolean execute(String arg0, JSONArray arg1, String arg2) { 
     Log.d("HelloPlugin", "Hello, this is a native function called from PhoneGap/Cordova!"); 
     return true; 
    } 
} 

जब मैं callFunction फोन मुझे लगता है कि असफल समारोह में काम किया। इसके अलावा, मैं लॉग विंडो में कोई हैलोप्लगिन संदेश नहीं देख सकता। मैं क्या कर सकता हूं?

उत्तर

4

मॉड्यूल 09_3 नमूने में अपाचेकॉर्डोवाप्लगिन वास्तव में कॉर्डोवाप्लगिन के बजाय बहिष्कृत प्लगइन क्लास का उपयोग कर रहा है। मैंने बहिष्कृत कॉर्डोवा प्लगइन एपीआई उपयोग को खत्म करने के लिए मॉड्यूल 09_3 में हैलोवर्ल्डप्लगिन क्लास को फिर से लिखा है। नमूना ठीक काम कर रहा है।

package com.AndroidApacheCordovaPlugin; 

import org.apache.cordova.api.CallbackContext; 
import org.apache.cordova.api.CordovaPlugin; 
import org.json.JSONArray; 
import org.json.JSONException; 

public class HelloWorldPlugin extends CordovaPlugin { 

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

     if (action.equals("sayHello")) { 
      String responseText = "Hello world"; 
      try { 
       responseText += ", " + arguments.getString(0); 
       callbackContext.success(responseText); 
       return true; 
      } catch (JSONException e) { 
       callbackContext.error(e.getMessage()); 
      } 
     } else { 
      callbackContext.error("Invalid action: " + action); 
      return false; 
     } 
     return false; 
    } 
} 
2

कुछ चीजें, 1) क्या आपने अपनी प्लगइन के लिए config.xml फ़ाइल में एक लाइन जोड़ दी है? और 2) आप कॉर्डोवाप्लगिन में गलत विधि को ओवरराइड कर रहे हैं। यह होना चाहिए:

public boolean execute(String action, JSONArray args, CallbackContext callbackContext) 
+0

हां मैंने config.xml में एक पंक्ति जोड़ा। <प्लगइन नाम = "हैलोवर्ल्ड" मान = "com.Cordova1.HelloWorld" /> मैंने आपके द्वारा कहा गया दूसरा प्रयास किया, लेकिन मैं फिर से वही चीज़ें देखता हूं। – gumust

0

मुझे एक ही समस्या थी। नमूने में मॉड्यूल 09_3 ApacheCordovaPlugin पर एक नज़र डालें। यह उदाहरण मेरे लिए काम करता है, लेकिन वे CordovaPlugin के बजाय Plugin कक्षा को बहिष्कृत कर रहे हैं।

import org.apache.cordova.api.Plugin; 
import org.apache.cordova.api.PluginResult; 

... 

public class HelloWorldPlugin extends Plugin { 

    public PluginResult execute(String action, JSONArray arguments, String callbackId) { 

पदावनत वर्ग PluginResult, नहीं एक boolean देता है। मैंने CordovaPlugin हस्ताक्षर का उपयोग करके एक ही कोड की कोशिश की है और इसके परिणामस्वरूप परिणाम विफल रहता है। स्पष्ट रूप से जो भी डब्ल्यूएल कोड प्लगइन का आह्वान कर रहा है वह स्पष्ट रूप से बहिष्कृत वर्ग के हस्ताक्षर की अपेक्षा कर रहा है।

+0

मैंने 09_3 अपाचे कॉर्डोवाप्लगिन को देखा, मैंने कोशिश की और मैंने फिर कोशिश की, लेकिन परियोजना अभी भी हर बार असफल हो जाती है। क्या आपके पास ऐसा उदाहरण है जो आपके हाथ में इसके लिए काम करता है? धन्यवाद। – gumust

+0

क्षमा करें, लेकिन 09_3 अपाचेकोर्डोवाप्लगिन मेरे लिए काम करता है, और ऊपर से लिखे गए संस्करण कोर्डोवाप्लगिन भी फैलाता है। वे एमुलेटर में और सीधे एक डिवाइस पर काम करते हैं। आप इसे ब्राउज़र सिम्युलेटर में चलाने की कोशिश नहीं कर रहे हैं? यह काम नहीं करेगा। –

0

मैंने समस्या हल की। मैं कॉर्डोवा के संस्करण 2.4 का उपयोग करता हूं। मैं समझ नहीं पा रहा हूं कि यह क्यों काम नहीं कर रहा था। जब मैं "cordova.exec" का उपयोग करता हूं, यह काम नहीं करता है, हालांकि जब मैं PhoneGap.exec का उपयोग करता हूं तो यह काम करता है।

इसके अलावा मैंने परिभाषा की तलाश की; कॉर्डोवा-2.4.0.जेएस की अंतिम पंक्ति में, यह var PhoneGap = cordova; ठीक है, फोनगैप परिभाषित किया गया था, लेकिन मुझे नहीं पता कि कॉर्डोवा क्यों काम नहीं करता है।

आपके उत्तरों के लिए धन्यवाद।

संबंधित मुद्दे