Android-通过意图安装APK-对失败做出反应

时间:2018-10-10 17:33:52

标签: android kotlin android-package-managers android-install-apk

我通过以下意图安装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解析不正确(例如,如果是针对其他架构的APK)还是仅仅是用户在请求上点击了“取消”?

我也尝试了startActivityForResult和相应的onActivityForResult函数,但这似乎与用户操作无关,并且在激发意图时立即被触发。

1 个答案:

答案 0 :(得分:0)

答案是,没有标准的方法。如果您查看source of the package manager service,将会发现没有成功广播的事件。

理论上您可以做一些事情...

  1. 触发该意图后,在活动/片段恢复时检查是否已安装软件包。
  2. 检查logcat日志是否具有权限,并解析它们以获取任何软件包管理器输出。

这些选项并不是完美的,可能无法在所有实现上都起作用,但可能会引导您朝着正确的方向前进。