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

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

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

Solutions Collecting From Web of "Неправильное сообщение с разрешением GET_ACCOUNTS"

Я бы рекомендовал отказаться от входа в Google+ и использовать новый логин Google. Он не требует специальных разрешений для доступа к электронной почте и может быть легко интегрирован.

https://developers.google.com/identity/sign-in/android/start

Разрешение GET_ACCOUNTS является частью группы android.permission-group.CONTACTS, а также

  • android.permission.READ_CONTACTS
  • android.permission.WRITE_CONTACTS
  • android.permission.GET_ACCOUNTS

Вот почему вы получаете сообщение для КОНТАКТОВ.

Поэтому, когда вы запрашиваете одно разрешение в группе, вы получите все из них в этой группе. Дополнительную информацию о разрешении можно найти в Android M здесь

Во второй половине дня я обновлял приложение для клиента, которое позволяет пользователям входить в 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.