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 と同じレベルのクラスにある関数を呼び出すことは可能ですか?