У меня есть метод, который делает обновление приложения, которое прекрасно работает до 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);