Cordova 4.0.0: exec() вызов неизвестного плагина

Я сгенерировал код, используя Cordova 4.0.0 CLI.

Сейчас я пытаюсь написать плагин для Android (MyPlugin) для выполнения нативного кода из веб-просмотра. Но каждый раз, когда я пытаюсь вызвать метод плагина, я получаю сообщение об ошибке:

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

2 ответа

Решение

Хорошо! Я решил это используя Cordova 3.6.4

Возможно встроенное веб-представление: я следовал этому руководству: http://cordova.apache.org/docs/en/4.0.0/guide_platforms_android_webview.md.html

В вашем плагине у вас должен быть файл js, использующий require, который экспортирует модуль (который должен соответствовать js-модулю, определенному в plugin.xml), исходный файл java, дополнительные ресурсы, если это необходимо, и самое важное, чтобы плагин мог творить чудеса: файл plugin.xml, который описывает структуру плагина, в котором вы определяете файлы для копирования (исходный файл) и модуль javascript (js-модуль).

Тогда вы используете cordova plugin add указав путь к источнику вашего плагина, чтобы добавить плагин в ваш проект.

Я бы порекомендовал вам взглянуть на простой плагин Cordova, например, вибрацию, чтобы изучить структуру и создать свой собственный, изменив имена файлов, имена модулей..., удалите все о платформах, которые вы не хотите поддерживать (по крайней мере, это что сработало для меня) https://git-wip-us.apache.org/repos/asf?p=cordova-plugin-vibration.git;a=tree

Документы для справки:

Другие вопросы по тегам