use*_*513 5 android phonegap-plugins angularjs cordova ionic-framework
我正在使用离子框架来制作Android应用程序.我有cordova 5.1版本.首先我使用命令行离子启动myApp标签创建一个项目.我添加了android平台.现在我需要将java代码传递给javascript代码.使用谷歌我发现我需要制作自定义插件.但我没有在谷歌上找到任何解决方案我们将如何创建自定义插件.我发现ng-cordova给出了自己的插件我们无法制作自定义插件.
我只需要UI上的一个按钮.点击该按钮我需要调用java函数打印一些登录控制台.然后返回成功或错误回调JavaScript文件
你能否告诉我如何在离子中创建一个简单的插件?
Kar*_*mar 16
是的,自定义cordova插件是痛苦的,因为官方文档不是那么好.
首先,我们需要了解自定义插件文件夹结构.
在你的android文件夹中创建一个CustomPlugin.java文件.
package com.example.myplugin;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONObject;
import org.json.JSONArray;
import org.json.JSONException;
public class CustomPlugin extends CordovaPlugin {
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if ("beep".equals(action)) {
// print your log here...
callbackContext.success();
return true;
}
return false; // Returning false results in a "MethodNotFound" error.
}
}
Run Code Online (Sandbox Code Playgroud)
现在我们需要在javascript和java代码之间建立一个接口.
Cordova为此提供了一个简单的功能.
exec(<successFunction>, <failFunction>, <service>, <action>, [<args>]);
Run Code Online (Sandbox Code Playgroud)
MycustomPlugin.js在www文件夹中创建一个文件.
cordova.exec( successCallback, ErrorCallBack, "service","action", []);
Run Code Online (Sandbox Code Playgroud)
值得知道的是,
service - > java类的名称
动作 - >我们要调用的动作(在这种情况下"嘟嘟"见上面的代码)
您的MycustomPlugin.js文件应如下所示:
var MyPlugin = {
PrintLog: function (successCallback, errorCallback, action) {
cordova.exec(
successCallback, // success callback function
errorCallback, // error callback function
'CustomPlugin', // mapped to our native Java class called
action, // with this action name , in this case 'beep'
[] )// arguments, if needed
}
}
module.exports = MyPlugin;
Run Code Online (Sandbox Code Playgroud)
最后,您需要配置plugin.xml文件
<?xml version="1.0" encoding="utf-8"?>
<plugin xmlns="http://www.phonegap.com/ns/plugins/1.0"
id="com.example.plugin"
version="0.0.1">
<name>Cordova Plugin</name>
<engines>
<engine name="cordova" version=">=3.4.0"/>
</engines>
<js-module src="www/MycustomPlugin.js" name="CustomPlugin">
<clobbers target="window.MycustomPlugin" />
</js-module>
<platform name="android">
<config-file target="res/xml/config.xml" parent="/*">
<feature name="CustomPlugin">
<param name="android-package" value="com.example.myplugin.CustomPlugin"/>
</feature>
</config-file>
<source-file src="src/android/CustomPlugin.java" target-dir="src/com/example/myplugin"/>
</platform>
</plugin>
Run Code Online (Sandbox Code Playgroud)
现在将此插件添加到您的项目中.myApp(你创建的那个)使用cordova plugin add /path/to/your/custom/plugin
并在$ ionicPlatform.ready函数中从javascript调用您的java代码
window.MycustomPlugin.PrintLog(function(res){
//success
}, function(err){
//error
}, "beep")
Run Code Online (Sandbox Code Playgroud)