2013-05-20 45 views
4

我已經完成了相當多的研究,似乎無法找到爲什麼這不起作用。我擁有的是運行Cordova 2.7.0的基於Cordova的Eclipse應用程序。我想要構建一個簡單的插件,在用戶完成時提醒用戶。使用Cordova和Eclipse爲Android創建helloWorld插件

我的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> 

我的config.xml行,我添加插件

<plugin name="HelloPlugin" value="org.apache.cordova.plugin.HelloPlugin" /> 

而且我的實際插件HelloPlugin.java是在src/COM /例子/ plugintest權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; 
    } 
} 

任何幫助非常感謝!

回答

3

config.xml中「HelloPlugin」的值應該指向Java類所在的包,以便Cordova可以找到並執行Java代碼。所以如果你改變 <plugin name="HelloPlugin" value="org.apache.cordova.plugin.HelloPlugin" /><plugin name="HelloPlugin" value="com.example.plugintest.HelloPlugin" /> 我相信它應該工作。

+0

更新我的配置文件,仍然沒有雪茄。如果它幫助我收到的警報是「JS Working」,然後是「Outside Call Working」,然後我什麼都沒有收到,甚至沒有任何錯誤信息。 –

+0

當我這樣做時,我得到了「JS Working」,「Outside call working」,「Done!」,這是因爲你永遠不會得到返回值(回調中的「插件工作」字符串)。 我想你沒有得到任何「完成」消息,你仍然可能在你的配置中搞砸了一些東西。我在'com.example.plugintest'中包含了我的兩個文件,並且我的配置文件中的行是我上面的。你在日誌中看不到_anything_? – MBillau

+0

這就是我一直在做的事情。我認爲這與科爾多瓦沒有做好準備有關。我正在和設備準備聽者一起玩,但仍然沒有得到它的工作。我接受你的答案,因爲它顯然對你有用。雖然我的配置與你的一樣。所以我不知道它爲什麼會適合你而不是我。你在使用科爾多瓦2.7嗎? –

4

在這一行

window.func = function(str,callback){ 
     alert("Outside Call Working"); 
     cordova.exec(callback, function(err){alert(err)},"HelloPlugin","echo", [str]); 
    } 

放像這樣

window.func = function(str,callback){ 
     alert("Outside Call Working"); 
     cordova.exec(callback, function(err){alert(err)},"org.apache.cordova.plugin.HelloPlugin","echo", [str]); 
    } 
相關問題