gpt4 book ai didi

java - 无法向多个 cordova.exec 发送回调

转载 作者:行者123 更新时间:2023-11-29 05:15:27 25 4
gpt4 key购买 nike

我正在构建一个 phonegap 应用程序,并使用 cordova.exec 从中调用了一个 java native 插件。我被困在意想不到的地方。

我在循环中多次调用 cordova.exec。此外,那些 native 插件正在执行异步任务。但令我惊讶的是,它仅针对第一次 cordova.exec() 调用返回回调。我希望它在我最后一次调用 cordova.exec() 时返回到 javascript。

请帮忙。我的代码如下----

Javascript 代码-

  $( "input:checked" ).each(function() 
{
cordova.exec(callbacksuccess,callbackerror,'MyPlugin','plugin1',[path,pckg,id]);
});
function callbacksuccess(e)
{
alert(e);
}
function callbackerror()
{
alert('error');
}

Java Native Plugin 代码-

if (action.equals("plugin1"))
{
new DownloadManager().execute(myurl);
return true;
}
public class DownloadManager extends AsyncTask<String, String, String>
{
@Override
public String doInBackground(final String... arg0)
{
try
{
downloadapk(arg0[0]);
installapk();
System.out.println("Download Complete");
PluginResult result = new PluginResult(PluginResult.Status.OK, "success");
result.setKeepCallback(true);
callback.success("done");
return null;
}
catch(Exception e)
{
callback.error("Some problem occured.Try again later");
return null;
}
}
}

假设我选择了 5 个列表项。它只返回一次“完成”。第一个 cordova.exec 函数只调用一次回调成功函数。我没有找到任何解决方案。提前致谢

最佳答案

试试这个。

1.在插件的 execute() 方法中,保存获得的 callbackId 并返回 NO_RESULT 插件结果,并将 keep callback id 设置为 true。

PluginResult pluginResult = new  PluginResult(PluginResult.Status.NO_RESULT); 
pluginResult.setKeepCallback(true);
return pluginResult;

2.当您的异步 java 方法完成时返回另一个插件结果,如下所示:

PluginResult result = new PluginResult(PluginResult.Status.OK, data); 
result.setKeepCallback(false);
this.success(result, this.myCallbackId);

关于java - 无法向多个 cordova.exec 发送回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26731417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com