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

Неправильное сообщение с разрешением GET_ACCOUNTS

Я пытаюсь обновить мое приложение с новыми разрешениями на Android M, которые используют Google+ для входа в систему, но когда я делаю checkSelfPermission(Manifest.permission.GET_ACCOUNTS), появляется всплывающее диалоговое окно "Разрешить MyApp получать доступ к вашим контактам"? с кнопками Deny и Allow.

Это кажется странным для разрешения GET_ACCOUNTS. Разве не следует говорить что-то, связанное с доступом к вашим учетным записям? Это ошибка? Или я должен делать что-то по-другому?

4b9b3361

Ответ 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, описана здесь.