用于原生Android应用程序的Cordova插件

时间:2014-06-19 05:20:32

标签: android cordova phonegap-plugins native-code cordova-plugins

我正在尝试使用cordova插件来访问本机安卓代码。

plugin.xml中

<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://www.phonegap.com/ns/plugins/1.0"
    id="com.appgyver.plugin.Echo"
    version="1.0.0">

    <name>EchoPlugin</name>

  <description>
    Echo Plugin for Steroids.js
  </description>

  <asset src="www/EchoPlugin.js" target="plugins/EchoPlugin.js" />

  <engines>
    <engine name="cordova" version=">=2.7.0" />
  </engines>

  <!-- android -->
  <platform name="android">
    <config-file target="res/xml/config.xml" parent="plugins">
      <plugin name="Echo" value="com.appgyver.plugin.Echo"/>
    </config-file>

    <source-file src="src/android/com/appgyver/plugin/Echo.java"
      target-dir="src/org/apache/cordova/plugin" />
  </platform>

</plugin>

EchoPlugin.js

window.echo = function(str, callback) {
    cordova.exec(callback, function(err) {
        callback('Nothing to echo.');
    }, "Echo", "echo", [str]);
};

Echo.java

package com.appgyver.plugin;

import org.apache.cordova.api.CordovaPlugin;
import org.apache.cordova.api.CallbackContext;
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, callbackContext);
            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.");
        }
    }
}

我只是想在手机间隙项目中实现这个插件。但我不知道如何实现它。我是否需要为此插件创建一个单独的文件夹,然后将其嵌套在我的电话间隙项目的插件文件夹中,其中存在其他插件(inappbrowser,console,geolocation等)?请帮帮我。

我找到了许多编写cordova插件的教程,但问题是我不知道如何在项目中使用这些插件。显然,此代码已从其他站点复制。但是我想测试这个是如何工作的。 请提供指导。

1 个答案:

答案 0 :(得分:0)

检查一下。也许你会错过加入 的 CORDOVA_PLUGIN.JS

请为插件添加和创建单独的文件夹,以获得更好的代码标准。 检查这个如何添加cordova_plugin.js

How to add permissions to Android PhoneGap project?