我们有一个允许用户手动更新应用程序的流程,因为我们的设备没有任何应用程序商店。我们从服务器下载apk并运行:
updateIntent = new Intent(Intent.ACTION_INSTALL_PACKAGE);
updateIntent.setData(contentUri);
updateIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
,其中contentUri指向我们存储的APK的位置。当安装正在运行时,该应用程序将关闭。然后,完成时将显示以下屏幕:
收到MY_PACKAGE_REPLACED意向后,我们将立即重新启动应用程序。问题是此屏幕仍在后台。
如何以编程方式将其消除?
我尝试过:
// Dismiss all system ui messages
Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
sendBroadcast(closeDialog);
但不适用于此类对话框
答案 0 :(得分:1)
尝试添加EXTRA_RETURN_RESULT
标志:
updateIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
答案 1 :(得分:0)
当您的应用正在安装/更新时,它进入stop
状态,这与用户进入设置和force stop
您的应用时的状态相同。
因此,service
或BroadcastReceiver
都将无法运行,因为您的应用将无法运行。
我建议您再创建1个应用程序,该应用程序将使用BroadcastReceiver收听APP INSTALLATIONS
并执行与此相关的操作,例如每当用户使用APK更新您的应用程序时,它将在安装后打开该应用程序。
希望这会有所帮助!