Проблемы с установкой 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

Другие вопросы по тегам