【发布时间】:2014-10-29 10:30:59
【问题描述】:
我使用 Cordova 4.0.0 CLI 生成了代码。
现在我尝试为 Android (MyPlugin) 编写一个插件来从 web 视图执行本机代码。但是每次我尝试调用插件的方法时,我都会收到错误消息:
exec() 调用未知插件
我在 config.xml 中尝试了不同的映射(并且还创建了一个 plugin.xml)。但没有什么对我有用。 API 也不是很有帮助。
有人知道如何实现这一点或我的实现有什么问题吗?
这是我的代码:
com.cordovaDemo.MyPlugin.java
public class MyPlugin extends CordovaPlugin {
@Override
public void initialize(CordovaInterface cordova, CordovaWebView webView) {
super.initialize(cordova, webView);
}
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
//MyCode
callbackContext.success(action);
return true;
}
index.html
<head>
...
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<title>Hello World</title>
<script>
window.func = function(str,callback){
cordova.exec(callback, function(err){alert(err)},"MyPlugin","echo", [str]);
}
function callPlugin(str){
window.func(str,function(){
alert("Done!");
});
}
</script>
</head>
<body>
<div class="app">
<div id="deviceready" class="blink">
<a onclick="callPlugin('Test')">Click me</a>
</div>
</div>
</body>
config.xml
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.touristmobile.cordovaDemo" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>CordovaDemo</name>
...
<content src="index.html" />
<access origin="*" />
<platform name="android">
<config-file target="config.xml" parent="/*">
<feature name="MyPlugin">
<param name="android-package" value="com.cordovaDemo.MyPlugin"/>
</feature>
</config-file>
</platform>
编辑:
好的,我想现在我了解了 cordova 插件的主要思想。 cordova 插件独立于“生成的”Android Wrapper 应用程序。
就我而言,cordova Webview 应该是我现有 Android 应用程序的扩展,并且 Webview 应该从主应用程序调用函数和显示信息。简而言之:是否可以调用与我的 CordovaActivity 处于同一级别的类中的函数
【问题讨论】:
-
如何将插件添加到项目中?您是否创建了 plugin.xml 文件并使用 plugman/cordova cli 添加插件?或者你直接修改platforms/android中的文件?
-
我直接创建并修改了plugin.xml文件。但我现在尝试使用 plugman 生成它们
标签: java android cordova plugins cordova-4