javascript - 使用 cordova 的 Android Hello World 插件

标签 javascript android cordova ionic-framework cordova-plugins

我正在尝试使用 Cordova 为 Android 构建一个 hello world 插件。该项目运行没有错误,但我无法得到结果。我的 logcat 返回错误添加插件时出错。这是我的代码

java脚本

window.func = function(str,callback){
            alert("Outside Call Working");
            cordova.exec(callback, function(err){alert(err)},"HelloPlugin","echo", [str]);
        }
        function callPlugin(str){
            alert("JS Working");
            window.func(str,function(){
                alert("Done!");
            });
        } 

安卓

public class HelloPlugin extends CordovaPlugin{

     @Override
        public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
            if(action.equals("echo")){
                String message = args.getString(0); 
                callbackContext.success(message);
                return true;
            }
            callbackContext.success(action);
            return true;
        }     
}

配置.xml

<feature name="HelloPlugin">
        <param name="android-package" value="com.ionicframework.myapp554544" />
    </feature>

注意:

上述代码是从(Creating a helloWorld plugin for Android using Cordova and Eclipse)这个问题中窃取的

编辑

索引.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
    <title></title>


    <!-- cordova script (this will be a 404 during development) -->
    <script src="cordova.js"></script>


    <!-- plugin bridge js -->
    <script src="js/plugin.js"></script>
  </head>
  <body > 
      <a onclick="callPlugin('Plugin Working!')">Click me</a>   
  </body>
</html>

插件.js

window.func = function(str,callback){
            alert("Outside Call Working");
            cordova.exec(callback, function(err){alert(err)},"org.apache.cordova.plugin.HelloPlugin","echo", [str]);
        }
        function callPlugin(str){
            alert("JS Working");
            window.func(str,function(){
                alert("Done!");
            });
        } 

HelloPlugin.java

package com.ionicframework.myapp554544;

import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;

public class HelloPlugin extends CordovaPlugin{

     @Override
        public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
            if(action.equals("echo")){
                String message = args.getString(0); 
                callbackContext.success(message);
                return true;
            }
            callbackContext.success(action);
            return true;
        }     
}

配置.xml

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.ionicframework.myapp554544" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <preference name="loglevel" value="DEBUG" />
    <feature name="Keyboard">
        <param name="android-package" value="com.ionic.keyboard.IonicKeyboard" />
        <param name="onload" value="true" />
    </feature>
    <feature name="Device">
        <param name="android-package" value="org.apache.cordova.device.Device" />
    </feature>
<!--  Here is the plugin entry -->
    <plugin name="HelloPlugin" value="com.example.plugintest.HelloPlugin" />
<!-- end of plugin entry -->
    <name>myApp</name>
    <description>
        An Ionic Framework and Cordova project.
    </description>
    <author email="hi@ionicframework" href="http://ionicframework.com/">
      Ionic Framework Team
    </author>
    <content src="index.html" />
    <access origin="*" />
    <preference name="webviewbounce" value="false" />
    <preference name="UIWebViewBounce" value="false" />
    <preference name="DisallowOverscroll" value="true" />
    <preference name="BackupWebStorage" value="none" />
</widget>

最佳答案

cordova.exec(callback, function(err){alert(err)},"HelloPlugin","echo", [str]);

应更改为:

cordova.exec(callback, function(err){alert(err)},"org.apache.cordova.plugin.HelloPlugin","echo", [str]);

还将您的 xml 条目更改为:

<plugin name="HelloPlugin" value="com.example.plugintest.HelloPlugin" />

关于javascript - 使用 cordova 的 Android Hello World 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27212020/

相关文章:

Android - 异步任务不将数据传递到私有(private)数组中?

android - 如何在各种设备上测试安卓企业应用

java - 工具栏的标题应该根据 Activity 而变化吗?

javascript - 在 PhoneGap 中只有一种 CSS 转换有效

javascript - 如何围绕 pre 标签创建 div

javascript - 使用 RxJS 将多个 ajax 请求转换为 Observables

javascript - 插入 Ajax 轮询

javascript - 如何在某个元素之后将所有元素包装在 div 中? (查询)

android - 运行 phonegap 相机示例时出错

android - PhoneGap 程序错误 "Web page not available"