В моем приложении есть функция автоматического обновления, которая загружает APK, и когда загрузка завершена, что Intent.VIEW_ACTION откроет приложение и позволит пользователю установить загруженный apk
Uri uri = Uri.parse("file://" + destination);
Intent install = new Intent(Intent.ACTION_VIEW);
install.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
install.setDataAndType(uri,
manager.getMimeTypeForDownloadedFile(downloadId));
activity.startActivity(install);
Это отлично работает для всего устройства < 24
Теперь, когда Android 24, видимо, нам больше не разрешено начинать с файла:///и после некоторого поиска в Google рекомендуется использовать Поставщик файлов
новый код:
Intent install = new Intent(Intent.ACTION_VIEW);
install.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
install.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Uri apkUri = FileProvider.getUriForFile(AutoUpdate.this,
BuildConfig.APPLICATION_ID + ".provider", file);
install.setDataAndType(apkUri,
manager.getMimeTypeForDownloadedFile(downloadId));
activity.startActivity(install);
Теперь activity.startActivity(install); выдает ошибку
Не найдено никаких действий для обработки Intent {act = android.intent.action.VIEW DAT = содержание://com.xxxx.xx.provider/MyFolder/Download/MyApkFile.apk typ = application/vnd.android.package-archive flg = 0x4000000}
Можно ли открыть приложение APK в Android 7 (24)?