checkSelfPermission() не работает для WRITE_EXTERNAL_STORAGE

У меня есть приложение, которое использует <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Он предоставляется автоматически на Android 6.0, но я могу отозвать его в настройках. Хотел проверить, предоставлено ли оно на случай, если пользователь отзовет его, поэтому я делаю это:

int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
    //OK permission granted, let's do stuff
} else {
    //I'll better ask for permission
}

Прикол в том, что условие ВСЕГДА выполняется, даже разрешение отзывалось вручную. И приложение не работает... Мне кажется, что это ошибка, или я что-то упустил?


person Jacek Kwiecień    schedule 04.11.2015    source источник


Ответы (1)


Вы что-то упускаете: targetSdkVersion из 23 или выше.

Если ваш targetSdkVersion равен 22 или меньше, вы не можете определить, было ли разрешение предоставлено или отозвано пользователем из настроек.

person CommonsWare    schedule 04.11.2015