我使用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;
}
的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插件独立于&#34;生成&#34; Android Wrapper应用。
在我的情况下,cordova Webview应该是我现有Android应用程序的扩展,Webview应该调用主应用程序的功能和显示信息。简而言之:是否可以调用位于与CordovaActivity相同级别的类中的函数
答案 0 :(得分:0)
在你的插件中你应该有一个,一个使用require的js文件导出一个模块(必须匹配plugin.xml中定义的js-module),java源文件,如果需要的其他资源,最重要的是让plugman做magic:plugin.xml文件,描述你定义要复制的文件(源文件)和javascript模块(js-module)的插件结构。
然后使用cordova plugin add
指定插件源的路径,将插件添加到项目中。
我建议你看看一个简单的cordova插件,比如振动来研究结构并通过更改文件名,模块名来制作你自己的...,删除你不想支持的平台的所有内容(至少那对我有用的东西) https://git-wip-us.apache.org/repos/asf?p=cordova-plugin-vibration.git;a=tree
文件供参考:
答案 1 :(得分:0)
确定!我用Cordova 3.6.4解决了它。
可以使用嵌入式Webview:我遵循本指南: http://cordova.apache.org/docs/en/4.0.0/guide_platforms_android_webview.md.html#Android%20WebViews