С Android 6 (Зефир) некоторые из критических разрешений должны быть предоставлены пользователем во время выполнения, чтобы он / она знал, к чему может обращаться ваше приложение.
эта ссылка - это все, что вам нужно
РЕДАКТИРОВАТЬ
добавить их в манифест
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
, а затем добавить этот код в свой метод создания
if (android.os.Build.VERSION.SDK_INT >= 23 && (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) !=
PackageManager.PERMISSION_GRANTED)) {
ActivityCompat.requestPermissions(
this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
2000);
}
при этом у пользователя появится диалоговое окно для согласования разрешений. если пользователь согласен, будет вызван метод onRequestPermissionsResult
, поэтому переопределите onRequestPermissionsResult
следующим образом
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED && requestCode == 2000) {
//do what you want with files
}
}
просто обратите внимание, что я установил код запроса на 2000. Это необязательно.