делает меня счастливым
еключил свое приложение на целевой API 27, и теперь оно не может быть предоставленоWRITE_EXTERNAL_STORAGE
разрешение -grantResult
является всегда-1
.
Мое приложение нуждается в этом разрешении, поскольку оно не использует частное внешнее хранилище приложений (котороене требует WRITE_EXTERNAL_STORAGE
начиная с API 19).
Я знаю, что в API 26 былиизменения поведения для разрешений, Однако это не объясняет мою проблему.
Я прошу обаREAD_EXTERNAL_STORAGE
а такжеWRITE_EXTERNAL_STORAGE
разрешения стандартным способом:
ActivityCompat.requestPermissions(activity, new String[] {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
}, requestCode);
(оба разрешения объявлены через<uses-permission
в манифесте).
Откроется диалоговое окно, и я нажимаю «Разрешить»:
Однако внутриonRequestPermissionsResult
обратный звонок я получаю-1
(отказано) дляWRITE_EXTERNAL_STORAGE
(а также0
(предоставлено) дляREAD_EXTERNAL_STORAGE
).
Не должен ли быть результат0
для обоих, так как я просил и, по-видимому, предоставил оба?
Я пытался запроситьWRITE_EXTERNAL_STORAGE
в одиночку, но в этом случае диалог не появляется вообще.
Еще одна деталь: я только что проверил объединенный манифест вbuild/intermediates/manifests/full/debug
и заметил, чтоWRITE_EXTERNAL_STORAGE
разрешение имеет атрибутandroid:maxSdkVersion="18"
(в моем манифесте такого атрибута нет). Это может произойти, потому что мое приложение имеетminApiVersion=21
, но я не уверен.