2014-09-29 40 views
0

我正在開發電話卡cordova版本3.5.0。我跟着很多指南,我無法爲手機創建我的一個本地代碼。我的問題是: 在哪裏找到java文件? 在config.xml中寫什麼? java腳本文件如何調用java並獲得答案?js文件與phonegap java文件之間的連接

我正在把Java文件導入插件文件夾,然後我寫的js文件,並從index.html的 叫他java文件看起來像這樣:

package org.apache.cordova.plugin; 

import org.apache.cordova.api.CordovaPlugin; 
import org.apache.cordova.api.PluginResult; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

/** 
* This class echoes a string called from JavaScript. 
*/ 
public class Echo extends CordovaPlugin { 
    @Override 
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { 
     if (action.equals("echo")) { 
      String message = args.getString(0); 
      this.echo(message); 
      return true; 
     } 
     return false; 
    } 

    private void echo(String message, CallbackContext callbackContext) { 
     if (message != null && message.length() > 0) { 
      callbackContext.success(message); 
     } else { 
      callbackContext.error("Expected one non-empty string argument."); 
     } 
    } 
} 

那麼JS是這樣的:

var HelloPlugin = { 
    callNativeFunction: function (success, fail, resultType) { 
     return cordova.exec(success, fail, 
          "org.apache.cordova.plugin.Echo", 
          "nativeAction", [resultType]); 
    } 
}; 


function callNativePlugin(returnSuccess) { 
    HelloPlugin.callNativeFunction(nativePluginResultHandler, nativePluginErrorHandler, returnSuccess); 
} 
function nativePluginResultHandler (result) { 
    alert("SUCCESS: \r\n"+result); 
} 
function nativePluginErrorHandler (error) { 
    alert("ERROR: \r\n"+error); 
} 

callNativePlugin("avishay"); 

和配置XML:

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

我得到一個錯誤「科爾多瓦爲n沒有定義「 爲什麼? 非常感謝。

p.s 一個很好的教程將會很棒。應該

+0

的問題是「nativeAction」 insted的回波,並把cordova.js和科爾多瓦,plugin.js在同一目錄 – avishayhajbi 2014-10-03 13:17:37

回答

0

你的JS,如:

var HelloPlugin = { 
callNativeFunction: function (success, fail, resultType) { 
    return cordova.exec(success, fail, 
         "Echo", 
         "echo", [resultType]); 
} 
}; 

無需包括您全packege只包括你的類名,你也串動作是無效的。請按照下面的方法。

經過以下格式

var version = { 
    createEvent: function(success, failure) { 
     cordova.exec(
       success, // success callback function 
       failure, // error callback function 
      'JavaClassname', // mapped to our native Java class called "Echo" 
      'GetVersionName', // with this action name(like "echo" our string action name in execute) 
      []// here you need to pass params.. 
     ); 
    } 
} 
相關問題