Подтвердить что ты не робот

Android M, запрашивающий разрешения с правами доступа

Android M Preview docs показывает нам, как проверять и запрашивать разрешения с новой моделью разрешений. В приведенной ниже таблице показано, что группа групп разрешений и связанные с ними разрешения.

Когда я пытаюсь checkSelfPermission с permission_group (т.е. Manifest.permission_group.CAMERA) при первом запуске, предсказуемо получаю PackageManager.PERMISSION_DENIED.

Затем попробуйте requestPermissions для этого же permission_group, и я не получу всплывающее диалоговое окно. 'onRequestPermissionsResult' немедленно возвращается с -1.

Когда я пытаюсь выполнить одну и ту же последовательность с Manifest.permission.Camera - все выглядит нормально. Но для простого приложения, которое я создаю, мне нужно записывать видео со звуком и запрашивать два отдельных разрешения, CAMERA и MICROPHONE (aka RECORD_AUDIO) кажется плохим дизайном.

Вопрос: есть ли checkSelfPermission и requestPermission, которые должны работать с Manifest.permission.* и Manifest.permission_group.*, но есть ошибка, которую я должен указать, так как она не будет отображать запрос? Или это преднамеренный дизайн?

* Примечание. Я понимаю, что я могу создать массив строк requestPermissions(String[], int) с несколькими разрешениями в нем сам, но у id все еще есть множество операторов if, чтобы проверить комбинации необходимых мне прав и запросить их как группу, когда мне нужно только запросить permission_group

4b9b3361

Ответ 1

Когда я пытаюсь проверитьSelfPermission с помощью license_group (т.е. Manifest.permission_group.CAMERA) при первом запуске, я предсказую, что получаю PackageManager.PERMISSION_DENIED.

Это потому, что checkSelfPermission() проверяет разрешения, а не группы разрешений.

Затем попробуйте запросить предложения для той же самой группы полномочий и я не получу всплывающее диалоговое окно. 'onRequestPermissionsResult' немедленно возвращает -1.

Это потому, что requestPermissions() работает с разрешениями, а не с группами разрешений.

Предполагается, что checkSelfPermission и requestPermission должны работать с Manifest.permission. *

Да.

и Manifest.permission_group. *

Нет.

Или был этот преднамеренный дизайн?

Предположительно, да. По крайней мере, на checkSelfPermission() он накладывает поверх других ранее существовавших методов, которые относятся к уровню API 1 и работают с разрешениями, а не группами разрешений.

когда мне нужно только запросить группу полномочий_управления

Вы делаете предположения о будущем Android, которые могут быть неточными. Сейчас, до-M, группы разрешений не особенно важны, и разрешения имеют значение. В M группы разрешений приобретают все большее значение, поскольку именно это M использует в своем представлении конечным пользователям, что может контролировать пользователь. Однако версии Android после этого могут предложить более тонкую детализацию по этому вопросу, будь то отдельным пользователям или предприятиям с помощью политик, и это, вероятно, вернется к разрешениям.

API предлагает, чтобы Google оставлял дверь открытой для этих ходов. По сути, материал группы разрешений - это решение UX, а не техническое.