0

Cordova 4.0.0 CLI を使用してコードを生成しました。

今、webview からネイティブ コードを実行する 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 プラグインの主なアイデアを理解できたと思います。コルドバ プラグインは、「生成された」Android ラッパー アプリから独立しています。

私の場合、cordova Webview は既存の Android アプリの拡張である必要があり、Webview はメイン アプリから関数と表示される情報を呼び出す必要があります。要するに: CordovaActivity と同じレベルのクラスにある関数を呼び出すことは可能ですか?

4

2 に答える 2

0

Ok!Cordova 3.6.4を使用して解決しました

埋め込み Webview が可能です: このガイドに従いました: http://cordova.apache.org/docs/en/4.0.0/guide_platforms_android_webview.md.html#Android%20WebViews

于 2014-11-04T13:28:44.870 に答える
0

プラグインには、require を使用してモジュールをエクスポートする js ファイル (plugin.xml で定義された js-module と一致する必要があります)、Java ソース ファイル、必要に応じて追加のリソースが必要です。 : コピーするファイル (source-file) と javascript モジュール (js-module) を定義するプラグインの構造を記述した plugin.xml ファイル。

次にcordova plugin add、プラグイン ソースへのパスを指定して、プラグインをプロジェクトに追加します。

私がお勧めするのは、振動のような単純なコルドバプラグインを見て、構造を調べ、ファイル名、モジュール名を変更して独自のものを作成し、サポートしたくないプラットフォームに関するすべてを削除することです(少なくとも私にとって何がうまくいったか) https://git-wip-us.apache.org/repos/asf?p=cordova-plugin-vibration.git;a=tree

参照用ドキュメント:

于 2014-10-29T11:37:22.890 に答える