我使用 Cordova 4.0.0 CLI 生成了代码。
现在我尝试编写一个适用于 Android 的插件(MyPlugin)来从 webview 执行本机代码。但是每次我尝试调用插件的方法时,我都会收到错误消息:
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;
}
索引.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>
配置文件
<?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 相同级别的类中的函数