首页 > 解决方案 > 以编程方式安装 .apk 的回调

问题描述

.apk我使用本地下载的,通过DownloadManager,使用以下代码更新我的应用程序:

val installIntent = Intent(Intent.ACTION_VIEW)
            installIntent.setDataAndType(localUri, "application/vnd.android.package-archive")
            installIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
            this.startActivity(installIntent) 

尽管大多数情况下它都有效,但有时,只有部分用户会收到"There was a problem parsing the package error"弹出窗口。

如果发生这种情况,或者用户在弹出窗口中按“确定”,我们是否可以在我们的应用程序中获得任何回调,我很感兴趣。例如,我在这里找到了一个回调,它检查包是否存在(意味着它已安装)但我对更新更感兴趣,在这种情况下,我已经知道该应用程序以前已安装。

是否有startActivityForResults针对此特定意图的回调(可能),所以我们知道它是成功安装还是失败?

标签: androidandroid-intentcallbackapk

解决方案


ACTION_VIEW并非旨在返回结果。在 Android 5.0 及更高版本上,PackageInstaller为您提供了用于安装应用程序的直接 API,您可以在其中提供回调(以 an 的形式IntentSender)以了解安装如何进行。

这个示例项目展示了使用 的基础知识PackageInstaller,您应该能够找到以更复杂的方式使用它的开源应用程序。例如,F-Droid 客户端可能使用PackageInstaller.


推荐阅读