2013-09-04 18 views

cevap

11

Yerel yöntemlerden herhangi bir yöntemi aramak için özel bir eklenti oluşturabilirsiniz. customplugin.js demek, ayrı bir JavaScript dosyası oluşturun ve içine koymak:

var CustomPlugin = {}; 

CustomPlugin.callNativeMethod = function() { 
    cordova.exec(null, null, "CustomPlugin", "callNativeMethod", []); 
}; 

Şimdi yerel Java tarafında, yeni bir sınıf oluşturup ona CustomPlugin.java ad verin ve ardından bu ekleyin:

package com.yourpackage; 

import org.apache.cordova.CordovaWebView; 
import org.apache.cordova.api.CallbackContext; 
import org.apache.cordova.api.CordovaInterface; 
import org.apache.cordova.api.CordovaPlugin; 

import com.yourpackage.MainActivity; 

public class CustomPlugin extends CordovaPlugin 
{ 
    private static final String TAG = "CustomPlugin"; 

    private CallbackContext callbackContext = null; 
    private MainActivity activity = null; 

    /** 
    * Override the plugin initialise method and set the Activity as an 
    * instance variable. 
    */ 
    @Override 
    public void initialize(CordovaInterface cordova, CordovaWebView webView) 
    { 
     super.initialize(cordova, webView); 

     // Set the Activity. 
     this.activity = (MainActivity) cordova.getActivity(); 
    } 

    /** 
    * Here you can delegate any JavaScript methods. The "action" argument will contain the 
    * name of the delegated method and the "args" will contain any arguments passed from the 
    * JavaScript method. 
    */ 
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException 
    { 
     this.callbackContext = callbackContext; 

     Log.d(TAG, callbackContext.getCallbackId() + ": " + action); 

     if (action.equals("callNativeMethod")) 
     { 
      this.callNativeMethod(); 
     } 
     else 
     { 
      return false; 
     } 

     return true; 
    } 

    private void callNativeMethod() 
    { 
     // Here we simply call the method from the Activity. 
     this.activity.callActivityMethod(); 
    } 
} 

Şimdi
... 
<feature name="CustomPlugin"> 
    <param name="android-package" value="com.yourpackage.CustomPlugin" /> 
</feature> 
... 

sadece JavaScript yöntemini çağırabilirsiniz sizin index.html eklentiyi çağırmak için:

bu satırı ekleyerek config.xml dosyasındaki eklentileri harita emin olun

CustomPlugin.callNativeMethod(); 

Bu yöntemin kullanılması, birçok özel yöntemi uygun şekilde ayarlamanıza olanak tanır. Daha fazla bilgi için PhoneGap eklenti geliştirme kılavuzunu here kontrol edin.

+0

Teşekkür

<plugin name="PluginName" value="com.namespace.PluginName"/> 

çalışması için/xml/Config.xml res eklentiyi eklemeniz gerekecektir senin Cevap yardımcı olabilir belki önceki sürüm için çalışıyoruz ama ben (3.0) phonegap son sürümünü kullanıyorum ve bunu kodlama ama çalışmıyor. Bilinmeyen eklentiye bu hata exec() çağrısı aldım, burada benzer bir şey buldum http://stackoverflow.com/questions/17974301/phonegap-3-plugin-exec-call-to-unknown-plugin – nramirez

+1

Haklısınız, Bu PhoneGap 3.0 ile çalışmayacak, ancak önceki cevapta kullandığım eklenti eşlemesi kullanımdan kaldırılmış çünkü düşünüyorum. Ancak, cevabımı PhoneGap 3.0 eşlemesiyle güncelledim. Esas olarak, config.xml dosyasındaki '' öğesi kullanımdan kaldırılmıştır, bunun yerine ' 'öğesini kullanmalısınız. – kieranroneill

+0

Evet! İş üstündeyim! Bu soruyu çözer gelmez cevabı ben göndereceğim! – nramirez

2

yukarıdaki cevabı her şeyi tamamladıktan sonra, ayrıca @suprnova </plugins> etiketinden önce

İlgili konular