我有一个名为“签名”的活动,我是从CordovaPlugin调用的;
插件.java
public boolean execute(String action, JSONArray args,
CallbackContext callbackContext) throws JSONException
{
Intent i = new Intent(context, Signature.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
cordova.startActivityForResult(this,i,90);
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
Log.d(TAG, "activity result in plugin: requestCode(" + requestCode + "), resultCode(" + resultCode + ")");
if(requestCode == 90) {
if (resultCode == this.cordova.getActivity().RESULT_OK) {
Bundle res = intent.getExtras();
String result = res.getString("results");
Log.d("FIRST", "result:"+result);
this.callbackContext
.success(result.toString());
} else {
this.callbackContext.error("Error");
}
}
签名库
private void finishWithResult(String result,int status)
{
Bundle conData = new Bundle();
conData.putString("results", result);
Intent intent = new Intent();
intent.putExtras(conData);
setResult(status, intent);
finish();
}
但是,当我调用“ cordova.startActivityForResult”函数时,“
onActivityResult”函数会立即自动调用它。我无法通过finishWithResult从Activity回调。任何建议。谢谢
首先,缺少一些代码( 执行 方法的返回语句),您必须告诉android / cordova-plugin等待,直到使用 NO_RESULT 和
PlugInResult 的 setKeepCallback 将结果发送回您的webview-app 为止 ,否则cordova /
android希望在 execute -method完成后立即获得结果:
Plugin.java:
public boolean execute(String action, JSONArray args,
CallbackContext callbackContext) throws JSONException
{
PluginResult r = new PluginResult(PluginResult.Status.NO_RESULT);
r.setKeepCallback(true);
callbackContext.sendPluginResult(r);
Intent i = new Intent(context, Signature.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
cordova.startActivityForResult(this,i,90);
return true;
}
public void onActivityResult(int requestCode, int resultCode, Intent intent){
// here is your former code
...
...
// at last call sendPluginResult
this.callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result.toString()));
// when there is no direct result form your execute-method use sendPluginResult because most plugins I saw and made recently (Reminder) prefer sendPluginResult to success/error
// this.callbackContext.success(result.toString());
}
在此处(针对您的插件类)和此处(针对您的签名类)有一个示例。
我的一个:这里和这里。
我也有类似的问题: CordovaActivity无法解析为Phonegap 3.4中的类型。 意味着,在主类中,不能解析为类型。 然而,我从这里下载了科尔多瓦Android Zip(如评论中所述):https://github.com/apache/cordova-android. 包括来自到我的构建路径。 行: 现在工作正常,但仍然找不到任何名为的扩展类。 我通过以下方式证明: 在未包装的文件
在没有新意图的情况下,如何从通知返回到活动 还有这个 通知单击:活动已打开
问题内容: 我有个简短的脚本,人们不断告诉我,我需要使用Key绑定来移动Jlabel,但我不知道该怎么做。没有人对如何以不使用键侦听器的方式实现键绑定有任何想法,或者如果添加按钮会出现问题? 问题答案: 与大多数事情一样,开始看看教程“ 如何使用键绑定”,几乎所有答案都将基于这些内容。 您可以做这样简单的事情… 正如我反复告诉您或您的同班同学一样,您不应该以这种方式使用组件。相反,您应该遵循自定义
问题内容: 当ORDER BY基于CASE语句时,选择多个ORDER BY列的正确MS SQL语法是什么? 以下对于单列工作正常,但我需要按多列进行排序: 问题答案: 你可以试试这个
问题内容: 我有一个MySql表,我想查询其中 成对 的列在特定集中的行。例如,假设我的表格如下所示: 现在,我希望提取其中 (f1,f2) 对为(’a’,30)或(’b’,20)的行,即行2,3,4。我也希望使用“ IN”样式的过滤器来完成此操作,因为我可能有很多对要提取。如果我尝试类似的方法: 我得到IN子句中为f1和f2指定的值的笛卡尔积,即具有f1 =’a’或’b’的所有可能组合的行,以及
问题内容: 我在JTextfield上输入了一个名称,但是我的表没有过滤任何东西! 我的代码: 问题答案: 您正在呼叫的 构造。它应该如何从filterTF中读取 文本 。我认为您应该从分配给的Action Event Listener调用它,提交(单击)文本时将调用它,如下所示: 如果要使用“根据用户键类型进行过滤”事件,请将键侦听器添加到您要输入过滤字符串的文本字段中。 但是,正如下面的注释所