Android - 通过意图安装 APK - 对失败做出反应
Posted
技术标签:
【中文标题】Android - 通过意图安装 APK - 对失败做出反应【英文标题】:Android - Install APK via intent - react to failure 【发布时间】:2019-03-15 16:44:13 【问题描述】:我正在通过以下意图安装 APK:
val apkUri = Uri.fromFile(apkFile)
val intent = Intent(Intent.ACTION_VIEW)
intent.setDataAndType(apkUri, "application/vnd.android.package-archive")
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
context.startActivity(intent)
我知道我可以检索 PACKAGE_ADDED 广播,然后在安装 APK 时做出反应。 但是,如果安装失败,我该如何应对?例如。如果 APK 没有正确解析(例如,如果它用于不同的架构),或者只是用户在请求上单击“CANCEL”?
我还尝试了startActivityForResult
和相应的onActivityForResult
函数,但这似乎与用户操作无关,并且在触发意图时立即触发。
【问题讨论】:
PACKAGE_ADDED
仅在实际安装时调用。取消下载没有广播。
我知道那个特定的广播只有在安装时才会触发。但必须有一种方法来处理失败。
如果以下答案回答了您的问题,请将其标记为已接受的答案。如果不是,请提供一些评论。
【参考方案1】:
答案是没有标准方式来做这件事。如果您查看source of the package manager service,您会看到没有成功广播的事件。
理论上你可以做一些事情......
-
在触发该意图后,当活动/片段恢复时检查是否已安装包。
如果您有权限检查 logcat 日志并解析它们以获取任何包管理器输出。
这些选项并不完美,可能不适用于所有实现,但可能会引导您走向正确的方向。
【讨论】:
以上是关于Android - 通过意图安装 APK - 对失败做出反应的主要内容,如果未能解决你的问题,请参考以下文章
在Android 4.2+上使用intent安装apk时启用降级