Для устройств Android с API 23 или выше, как я могу предоставить разрешения на внешнее хранилище без перезапуска приложения (вроде того, как музыкальная библиотека пользователя загружается в Google Play Music в течение одного сеанса)? Я знаю, что эта проблема решалась несколько раз здесь, в SO, но пока мне не повезло.
Вот разрешения в моем файле манифеста:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Основная деятельность:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // API 23
if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
return; // Included here to prevent the app from crashing.
}
}
/**
* CODE HERE FOR INSTANTIATIONS AND SUCH.
*/
}
... Потому что на данный момент мне нужно перезапустить приложение для прохождения разрешений (и экземпляров MainActivity и т. Д.) после принятия разрешений из начального всплывающего окна.
Огромное спасибо.
onCreate()
, если у вас уже есть разрешения на этот момент. Также вызовите этот метод изonRequestPermissionsResult()
, если пользователь согласился с этими разрешениями. См., Например, этот образец проекта. - person CommonsWare   schedule 21.02.2017