Я переключил свое приложение для целевой 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, но я не уверен.
