Intent openIntent;
File file = new File(mApkPath);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
String auth = mContext.getPackageName() + ".file.provider";
Uri apkUri = FileProvider.getUriForFile(mContext, auth, file);
openIntent = new Intent(Intent.ACTION_INSTALL_PACKAGE);
openIntent.setData(apkUri);
openIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
} else {
openIntent = new Intent(Intent.ACTION_VIEW);
openIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
openIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
openIntent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
}
return openIntent;
Я обнаружил, что таким способом можно открыть действие, которое означает «Установить успех» на Android-устройстве с низкой SDK-версией, но в Hight-версии SDK, когда установка завершится, приложение будет иметь сбой, даже если новый .apkбыл установлен.
Есть ли у вас какой-либо способ открыть действие, которое означает «Установить успешно», чтобы позволить пользователю выбрать «Завершить» или «Открыть»?
Кстати, яполучил resultCode == RESULT_CANCELED
, собственно, новый .apk был установлен.И я заметил, PackageInstaller может обновить apk пользователя, но как его использовать?Я прочитал ApiDemos, но получил result == PackageInstaller.STATUS_PENDING_USER_ACTION
по int result = intent.getIntExtra(PackageInstaller.EXTRA_STATUS, PackageInstaller.STATUS_FAILURE)
, но .apk был установлен, и никаких кнопок «Завершено» или «Открыть».
Спасибо!