Проблемы с установкой APK из локального хранилища в SDK 26
У меня есть метод, который делает обновление приложения, которое прекрасно работает до SDK версии 26.
В 26 он открывает действие, а затем быстро закрывает его снова без каких-либо (очевидных) исключений или предупреждений.
Я не вижу никаких документов о новых разрешениях или что-либо, что необходимо. Если я просто изменю minSdkVersion на 25, он снова будет работать нормально.
Хотелось бы знать, что меняется в 26 и как с этим справиться.
Вот соответствующий сегмент кода, но, как я уже сказал, он не "сломан" - он просто молча терпит неудачу в 26.
if (Build.VERSION.SDK_INT <= android.os.Build.VERSION_CODES.M) {
Log.d(TAG, "Marshmallow or lower");
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
}
//if version 24 or above
else {
Log.d(TAG, "higher than Marshmallow");
Uri uri = FileProvider.getUriForFile(mContext, mContext.getApplicationContext().getPackageName() + ".provider", file);
intent.setDataAndType(uri, "application/vnd.android.package-archive");
}
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
mContext.startActivity(intent);
1 ответ
Вы пытались добавить приведенное ниже разрешение на манифест?
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
В Android Oreo внесены изменения, чтобы сделать установку приложений из-за пределов PlayStore более безопасной. Вы можете получить больше информации по ссылке ниже:
https://android-developers.googleblog.com/2017/08/making-it-safer-to-get-apps-on-android-o.html