Cordova PhoneGap Android 数据回调
Cordova PhoneGap Android Callback with data
我不知道如何将数据从 JAVA 取回 javascript,因此我可以在 Android 上使用 Cordova 更新 UI。这里有两个按钮,当它们被按下时,它们将我想要 return 的位置计数器增加到 UI 并更新屏幕但无法弄清楚它是如何 returned.
我以为我可以将 switchPos 添加到回调中,但似乎无法在 javascript 中的任何地方获取它,我打算用“.innerHTML”将值写入 UI ="语句。
这是插件javascript。
cordova.define(‘myplugin', function (require, exports, module) {
module.exports = {
switch1: function (success, failure) {
cordova.exec(success, failure, “MyPlugin", “switch1”, []);
},
switch2: function (success, failure) {
cordova.exec(success, failure, “MyPlugin", “switch2”, []);
}
};
});
这是调用它们的 javascript。
var myplugin = cordova.require('myplugin');
var myapp = {
appButton1: function(){
myplugin.switch1();
},
appButton2: function(){
myplugin.switch2();
}
};
这是插件的 JAVA 代码。
public class MyPlugin extends CordovaPlugin {
// actions
private static final String SWITCH1 = “switch”1;
private static final String SWITCH2 = “switch”2;
// callbacks
private CallbackContext connectCallback;
// Switch Counters
public static int switchPos1 = 1;
public static int switchPos2 = 1;
@Override
public boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) throws JSONException {
boolean validAction = true;
if (action.equals(SWITCH1)) {
Log.d("Valid Action = SWITCH1 Pos: “ + switchPos1);
switchPos1++;
callbackContext.success(switchPos1);
} else if (action.equals(SWITCH2)) {
Log.d("Valid Action = SWITCH2 Pos: “ + switchPos2);
switchPos2++;
callbackContext.success(switchPos2);
} else {
validAction = false;
}
return validAction;
}
}
你可以这样试试
首先您需要在 config.xml 中声明您的自定义插件。您可以在 res > xml 文件夹中找到此文件。
<feature name="CustomPlugin">
<param name="android-package" value="com.Phonegap.CustomPlugin" />
</feature>
然后你需要使用Java-代码
实现插件
public class CustomPlugin extends CordovaPlugin {
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext)
throws JSONException {
if (action.equals("sayHello")){
try {
String responseText = "Hello world, " + args.getString(0);
callbackContext.success(responseText);
} catch (JSONException e){
callbackContext.error("Failed to parse parameters");
}
return true;
}
return false;
}
}
最后我们从 javascript
调用了一个插件
function initial(){
var name = $("#NameInput").val();
cordova.exec(sayHelloSuccess, sayHelloFailure, "CustomPlugin", "sayHello", [name]);
}
function sayHelloSuccess(data){
alert("OK: " + data);
}
function sayHelloFailure(data){
alert("FAIL: " + data);
}
当您调用插件时,您必须传递成功和失败函数:
var myplugin = cordova.require('myplugin');
var myapp = {
appButton1: function(){
myplugin.switch1(function(data){alert(data);},function(error){alert(error);});
},
appButton2: function(){
myplugin.switch2(function(data){alert(data);},function(error){alert(error);});
}
};
我不知道如何将数据从 JAVA 取回 javascript,因此我可以在 Android 上使用 Cordova 更新 UI。这里有两个按钮,当它们被按下时,它们将我想要 return 的位置计数器增加到 UI 并更新屏幕但无法弄清楚它是如何 returned.
我以为我可以将 switchPos 添加到回调中,但似乎无法在 javascript 中的任何地方获取它,我打算用“.innerHTML”将值写入 UI ="语句。
这是插件javascript。
cordova.define(‘myplugin', function (require, exports, module) {
module.exports = {
switch1: function (success, failure) {
cordova.exec(success, failure, “MyPlugin", “switch1”, []);
},
switch2: function (success, failure) {
cordova.exec(success, failure, “MyPlugin", “switch2”, []);
}
};
});
这是调用它们的 javascript。
var myplugin = cordova.require('myplugin');
var myapp = {
appButton1: function(){
myplugin.switch1();
},
appButton2: function(){
myplugin.switch2();
}
};
这是插件的 JAVA 代码。
public class MyPlugin extends CordovaPlugin {
// actions
private static final String SWITCH1 = “switch”1;
private static final String SWITCH2 = “switch”2;
// callbacks
private CallbackContext connectCallback;
// Switch Counters
public static int switchPos1 = 1;
public static int switchPos2 = 1;
@Override
public boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) throws JSONException {
boolean validAction = true;
if (action.equals(SWITCH1)) {
Log.d("Valid Action = SWITCH1 Pos: “ + switchPos1);
switchPos1++;
callbackContext.success(switchPos1);
} else if (action.equals(SWITCH2)) {
Log.d("Valid Action = SWITCH2 Pos: “ + switchPos2);
switchPos2++;
callbackContext.success(switchPos2);
} else {
validAction = false;
}
return validAction;
}
}
你可以这样试试
首先您需要在 config.xml 中声明您的自定义插件。您可以在 res > xml 文件夹中找到此文件。
<feature name="CustomPlugin">
<param name="android-package" value="com.Phonegap.CustomPlugin" />
</feature>
然后你需要使用Java-代码
实现插件public class CustomPlugin extends CordovaPlugin {
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext)
throws JSONException {
if (action.equals("sayHello")){
try {
String responseText = "Hello world, " + args.getString(0);
callbackContext.success(responseText);
} catch (JSONException e){
callbackContext.error("Failed to parse parameters");
}
return true;
}
return false;
}
}
最后我们从 javascript
调用了一个插件function initial(){
var name = $("#NameInput").val();
cordova.exec(sayHelloSuccess, sayHelloFailure, "CustomPlugin", "sayHello", [name]);
}
function sayHelloSuccess(data){
alert("OK: " + data);
}
function sayHelloFailure(data){
alert("FAIL: " + data);
}
当您调用插件时,您必须传递成功和失败函数:
var myplugin = cordova.require('myplugin');
var myapp = {
appButton1: function(){
myplugin.switch1(function(data){alert(data);},function(error){alert(error);});
},
appButton2: function(){
myplugin.switch2(function(data){alert(data);},function(error){alert(error);});
}
};