Cordova 4.0.0:exec()调用未知插件

时间:2014-10-29 10:30:59

标签: java android cordova plugins cordova-4

我使用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相同级别的类中的函数

2 个答案:

答案 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