我有一个Android应用程序(第三方,不是在谷歌播放)每天检查一次新版本。检查更新版本并下载它的过程发生在Service
。因为我不想停止使用其他应用程序的用户(特别是当互联网速度很慢时),我使用了一项服务。如何在没有历史记录(空堆栈)的后台服务中更新Android应用?
我执行BroadcastReceiver
以在下载完成时得到通知(ACTION_DOWNLOAD_COMPLETE
)。我想通过使用空栈来启动它的活动来安装新版本。我做如下:
installIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(installIntent);
,但我得到这个错误日志:
Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
与Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY
标志开始的意图,不会清除活动叠加。
通知:如果用户点击后退按钮或取消,导航到我的应用程序的活动,但在这种情况下,我希望应用程序关闭,没有“无响应”的消息。
问题:是否可以在服务中运行具有空活动堆栈的活动(安装程序一)?有没有其他的方式来完成这项工作?如果是的话如何?
顺便说一下,我所有这些的意图是强制用户安装更新。 谢谢。
发布您的清单。我假设安装程序'Activity'不是通常的根'Activity'(ACTTION = MAIN和CATEGORY = LAUNCHER的那个) –
'Manifest'中没有定义安装程序活动,它通过意图调用:'Intent installIntent =新意图(Intent.ACTION_VIEW); installIntent.setDataAndType(Uri.fromFile(myFile), “application/vnd.android.package-archive”);' –
项目位于[此链接](https:// github。 com/Kickass86/MPAS/tree/master/app/src/main) –