以编程方式安装 .apk 的回调
Callback for programatically install .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"
弹出窗口。
我感兴趣的是,无论何时发生这种情况,或者用户在弹出窗口中按下 'OK',我们的应用程序中是否可以获得任何回调。我找到了 here for instance,一个检查包是否存在(意味着它已安装)的回调,但我对更新更感兴趣,在这种情况下我已经知道该应用程序之前已安装。
是否有针对此特定意图的回调(可能 startActivityForResults
),以便我们知道它是成功安装还是失败?
ACTION_VIEW
并非旨在 return 结果。在 Android 5.0 及更高版本上,PackageInstaller
为您提供直接 API 安装应用程序,您可以在其中提供回调(以 IntentSender
的形式)以了解有关安装如何进行。
This sample project 展示了使用 PackageInstaller
的基础知识,您应该能够找到以更复杂的方式使用它的开源应用程序。比如F-Droid客户端大概使用PackageInstaller
.
我使用本地下载的 .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"
弹出窗口。
我感兴趣的是,无论何时发生这种情况,或者用户在弹出窗口中按下 'OK',我们的应用程序中是否可以获得任何回调。我找到了 here for instance,一个检查包是否存在(意味着它已安装)的回调,但我对更新更感兴趣,在这种情况下我已经知道该应用程序之前已安装。
是否有针对此特定意图的回调(可能 startActivityForResults
),以便我们知道它是成功安装还是失败?
ACTION_VIEW
并非旨在 return 结果。在 Android 5.0 及更高版本上,PackageInstaller
为您提供直接 API 安装应用程序,您可以在其中提供回调(以 IntentSender
的形式)以了解有关安装如何进行。
This sample project 展示了使用 PackageInstaller
的基础知识,您应该能够找到以更复杂的方式使用它的开源应用程序。比如F-Droid客户端大概使用PackageInstaller
.