La création d'un plugin helloWorld pour Android à l'aide de Cordoue et Eclipse
J'ai fait un peu de recherche et n'arrive pas à trouver pourquoi cela ne fonctionne pas. Ce que j'ai est Cordova en fonction de l'application pour Android dans Eclipse exécution de Cordova 2.7.0. Je veux construire un plugin simple qui vient d'alerter l'utilisateur lorsqu'il a terminé.
Mon index.html
<head>
<script type="text/javascript" src="cordova-2.7.0.js"></script>
<script>
window.func = function(str,callback){
alert("Outside Call Working");
cordova.exec(callback, function(err){alert(err)},"HelloPlugin","echo", [str]);
}
function callPlugin(str){
alert("JS Working");
window.func(str,function(){
alert("Done!");
});
}
</script>
</head>
<body>
<h2>PluginTest</h2>
<a onclick="callPlugin('Plugin Working!')">Click me</a>
</body>
Mon config.xml ligne où j'ai ajouté le plugin
<plugin name="HelloPlugin" value="org.apache.cordova.plugin.HelloPlugin" />
Et mon plugin HelloPlugin.java c'est dans src/com/example/plugintest juste à côté MainActivity.java
package com.example.plugintest;
import org.apache.cordova.api.CallbackContext;
import org.apache.cordova.api.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;
public class HelloPlugin extends CordovaPlugin{
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
/*if(action.equals("echo")){
String message = args.getString(0);
callbackContext.success(message);
return true;
}*/
callbackContext.success(action);
return true;
}
}
Toute aide est grandement appréciée!
OriginalL'auteur Matthew McCoy | 2013-05-20
Vous devez vous connecter pour publier un commentaire.
La valeur de "HelloPlugin" dans votre config.xml doit pointer vers le paquet, où la classe Java est, de sorte que Cordova pouvez trouver et d'exécuter le code Java. Donc, si vous changez
<plugin name="HelloPlugin" value="org.apache.cordova.plugin.HelloPlugin" />
pour
<plugin name="HelloPlugin" value="com.example.plugintest.HelloPlugin" />
Je crois que cela devrait fonctionner.
Quand je le fais, j'ai "JS", "appel à l'Extérieur de travail", "bien Fait!", ce qui est normal car vous n'avez jamais obtenir la valeur de retour ("Plugin de Travail" chaîne dans votre fonction de rappel.) Je pense que depuis que vous êtes de ne pas obtenir quoi que ce soit le "Fait" du message, vous pouvez encore avoir quelque chose a foiré dans votre config. J'ai eu mes deux fichiers dans
com.example.plugintest
, l'emballage, et la ligne dans mon fichier de config est ce que j'ai ci-dessus. Vous ne voyez pas tout dans les journaux?C'est ce que j'ai fait. Je pense qu'il a quelque chose à voir avec cordova n'est pas prêt. Je suis en train de jouer avec le deviceready auditeur, mais toujours pas se que de travailler. Mauvais accepter votre réponse car c'est évidemment de travailler pour vous. Ma config est la même que la vôtre. Donc je ne sais pas pourquoi il pourrait fonctionner pour vous et pas moi. Êtes-vous à l'aide de cordova 2.7?
Hmmm, je ne savais même pas que le code n'était pas enveloppé dans un onDeviceReady() vérifier. Je suppose que Cordoue est en cours de chargement avant que j'ai une chance de cliquer sur le bouton. Oui, je suis en utilisant 2.7. Je suis en train de tester sur une Nexus 7 de l'appareil, peut-être que c'est une différence? Avez-vous essayé d'emballage tout en onDeviceReady fonction, comme ceci:
document.addEventListener('deviceready', onDeviceReady, false); function onDeviceReady(){window.func = function(str,callback){ alert("Outside Call Working"); cordova.exec(callback, function(err){alert(err)},"HelloPlugin","echo", [str]); } }
Yup. Et j'ai même essayé de simplement mettre une alerte à l'intérieur d'un ondeviceready comme document.la méthode addEventListener("deviceready", onDeviceReady, false); la fonction onDeviceReady(){ alert("cordova");} " Et cela ne fonctionne même pas.
OriginalL'auteur MBillau
Dans cette ligne
mettre comme ceci
OriginalL'auteur Eranga Lakmal Perera