包安装程序对话框可以关闭吗?

Package installer dialog dismissible?

我正在做一些演示应用程序商店。此应用程序可以检测深度 link 并从 link 安装应用程序。在安装应用程序之前,用户会看到对话框(至少在 Android 11 和 12),其中 he/she 可以单击“安装”或“取消”。 PackageInstaller 打开对话框。我正在使用 BroadcastReceiver 接收安装状态(例如 PackageInstaller.STATUS_PENDING_USER_ACTION)。当用户单击取消或安装或发生某些错误时,我会收到一个状态。

但用户可以在对话框外单击。对话被微笑地关闭,并且没有返回任何状态报告。

有办法获取状态吗?或者让对话框不可关闭?

编辑:对话框是由 PackageInstaller 创建的,我无法控制它的属性。

直接 - 不,但您可以:

  1. 跟踪 onResume 事件以检测它何时关闭(它需要一些过滤以避免错误检测);
  2. 将其包装到某个代理 activity 中并使用 startActivityForResult/onActivityResultSTATUS_PENDING_USER_ACTION 开始那个 EXTRA_INTENTresultCode 总是 0,但你至少会有一个结束事件。