我正在尝试使用 Cordova 为 Android 构建一个 hello world 插件。该项目运行没有错误,但我无法得到结果。我的 logcat 返回错误添加插件时出错
。这是我的代码
java脚本
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!");
});
}
安卓
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;
}
}
配置.xml
<feature name="HelloPlugin">
<param name="android-package" value="com.ionicframework.myapp554544" />
</feature>
注意:
上述代码是从(Creating a helloWorld plugin for Android using Cordova and Eclipse)这个问题中窃取的
编辑
索引.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<title></title>
<!-- cordova script (this will be a 404 during development) -->
<script src="cordova.js"></script>
<!-- plugin bridge js -->
<script src="js/plugin.js"></script>
</head>
<body >
<a onclick="callPlugin('Plugin Working!')">Click me</a>
</body>
</html>
插件.js
window.func = function(str,callback){
alert("Outside Call Working");
cordova.exec(callback, function(err){alert(err)},"org.apache.cordova.plugin.HelloPlugin","echo", [str]);
}
function callPlugin(str){
alert("JS Working");
window.func(str,function(){
alert("Done!");
});
}
HelloPlugin.java
package com.ionicframework.myapp554544;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.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;
}
}
配置.xml
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.ionicframework.myapp554544" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<preference name="loglevel" value="DEBUG" />
<feature name="Keyboard">
<param name="android-package" value="com.ionic.keyboard.IonicKeyboard" />
<param name="onload" value="true" />
</feature>
<feature name="Device">
<param name="android-package" value="org.apache.cordova.device.Device" />
</feature>
<!-- Here is the plugin entry -->
<plugin name="HelloPlugin" value="com.example.plugintest.HelloPlugin" />
<!-- end of plugin entry -->
<name>myApp</name>
<description>
An Ionic Framework and Cordova project.
</description>
<author email="hi@ionicframework" href="http://ionicframework.com/">
Ionic Framework Team
</author>
<content src="index.html" />
<access origin="*" />
<preference name="webviewbounce" value="false" />
<preference name="UIWebViewBounce" value="false" />
<preference name="DisallowOverscroll" value="true" />
<preference name="BackupWebStorage" value="none" />
</widget>
最佳答案
cordova.exec(callback, function(err){alert(err)},"HelloPlugin","echo", [str]);
应更改为:
cordova.exec(callback, function(err){alert(err)},"org.apache.cordova.plugin.HelloPlugin","echo", [str]);
还将您的 xml 条目更改为:
<plugin name="HelloPlugin" value="com.example.plugintest.HelloPlugin" />
关于javascript - 使用 cordova 的 Android Hello World 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27212020/