Неправильное сообщение с разрешением GET_ACCOUNTS
Я пытаюсь обновить мое приложение с новыми разрешениями на Android M, которые используют Google+ для входа в систему, но когда я делаю checkSelfPermission(Manifest.permission.GET_ACCOUNTS)
, появляется всплывающее диалоговое окно "Разрешить MyApp получать доступ к вашим контактам"? с кнопками Deny и Allow.
Это кажется странным для разрешения GET_ACCOUNTS. Разве не следует говорить что-то, связанное с доступом к вашим учетным записям? Это ошибка? Или я должен делать что-то по-другому?
Ответы
Ответ 1
Разрешение GET_ACCOUNTS является частью группы android.permission-group.CONTACTS, а также
- android.permission.READ_CONTACTS
- android.permission.WRITE_CONTACTS
- android.permission.GET_ACCOUNTS
Вот почему вы получаете сообщение для КОНТАКТОВ.
Поэтому, когда вы запрашиваете одно разрешение в группе, вы получите все из них в этой группе.
Дополнительную информацию о разрешении можно найти в Android M здесь
Ответ 2
Я бы рекомендовал отказаться от входа в Google+ и использовать новый логин Google. Он не требует специальных разрешений для доступа к электронной почте и может быть легко интегрирован.
https://developers.google.com/identity/sign-in/android/start
Ответ 3
Сегодня я обновлял клиентское приложение, которое позволяет пользователям входить в Google+. Возможно, вам не нужно проверять разрешения GET_ACCOUNTS во время выполнения. Я обновил манифест, чтобы получить разрешение GET_ACCOUNTS с помощью android:maxSdkVersion="22"
.
На Nexus 5, работающем с Marshmallow, я смог успешно войти в систему с помощью Google+, не отображая диалоговое окно разрешений времени выполнения. Контакты не отображаются в настройках > Приложения > [мое клиентское приложение] > Разрешения.
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" android:maxSdkVersion="22"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS" android:maxSdkVersion="22"/>
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" android:maxSdkVersion="22"/>
<uses-permission android:name="android.permission.USE_CREDENTIALS" android:maxSdkVersion="22"/>
Документация для GET_ACCOUNTS, отражающая изменение поведения в Marshmallow, описана здесь.