【发布时间】:2014-11-04 09:17:12
【问题描述】:
我正在构建一个phonegap 应用程序,并使用cordova.exec 从中调用了一个java 本机插件。 我被卡在了意想不到的地方。
我在一个循环中多次调用cordova.exec。这些本地插件也在执行异步任务。但令人惊讶的是,它只为第一次调用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 函数,callbacksuccess 函数只调用一次。我没有找到任何解决方案。 提前感谢
【问题讨论】:
-
你这个是怎么解决的?以下答案对我不起作用..
标签: java javascript android cordova