如何获得安装意图的结果?

Bau*_*i89 0 android install android-intent apk

在我的应用程序中,我从服务器下载apk并将其保存在设备上。该apk用于更新应用。如果下载完成,则提示用户使用以下代码进行下载:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    Uri apkUri = FileProvider.getUriForFile(getApplicationContext(), BuildConfig.APPLICATION_ID + ".provider", updateAPK);
    Intent intent = new Intent(Intent.ACTION_INSTALL_PACKAGE);
    intent.setData(apkUri);
    intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    startActivity(intent);

} else {
    Uri apkUri = Uri.fromFile(updateAPK);
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)

这可以正常工作,但是我的问题是:ist能否获得意图的结果,因此我可以检查用户是否取消了安装?

Com*_*are 5

将您的方案分为三个方案,而不是两个。

在除API等级14,使用老设备ACTION_VIEWfile Uri。请注意,您不需要FLAG_ACTIVITY_NEW_TASK-更准确地说,在所有三种情况下使用或不使用它都应保持一致。

在API级别14-23的设备上,ACTION_INSTALL_PACKAGE与一起使用file Uri设置EXTRA_RETURN_RESULTtrue,然后使用startActivityForResult()

在API级别为24+的设备上,请ACTION_INSTALL_PACKAGE与一起使用content Uri设置EXTRA_RETURN_RESULTtrue,然后使用startActivityForResult()

在后两种情况下,onActivityResult()将报告用户是否安装了该应用程序(RESULT_OK)。