2015-06-08 3 views
19

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

Когда я пытаюсь к 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, чтобы проверить комбинации необходимых мне прав и запросить их как группу, когда i должен нужно только запросить permission_group

ответ

24

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

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

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

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

Является checkSelfPermission и requestPermission должен работать с Manifest.permission. *

Да.

и Manifest.permission_group. *

No.

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

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

, когда я должен только нужно, чтобы запросить permission_group

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

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

+0

был не осведомлен о контрольном слое на верхней части старых методов api, это хорошо знать. я мог бы просто попробовать и сделать вспомогательную утилиту, которая позволяет людям проходить в группах разрешений и посмотреть, имеет ли это смысл для меня и потенциально другие :) спасибо за ответ cw – trippedout

+0

, но затем, что такое известное использование 'Manifest.permission_group. class'? –

+0

@HendraAnggrian: Например, вы можете использовать его с помощью '' getPermissionGroupInfo() 'on' PackageManager' (https://developer.android.com/reference/android/content/pm/PackageManager.html#getPermissionGroupInfo (java. lang.String,% 20int)). – CommonsWare

Смежные вопросы