12

Google+のログインを使用する新しいAndroid M権限でアプリを更新しようとしていますが、checkSelfPermission(Manifest.permission.GET_ACCOUNTS)を実行すると「MyAppから連絡先へのアクセスを許可しますか?拒否ボタンと許可ボタンを使用します。GET_ACCOUNTS権限のある間違ったメッセージ

これはGET_ACCOUNTS権限のために奇妙なようです。代わりにあなたのアカウントにアクセスするために関連する何かを言ってはいけませんか?これはバグですか?あるいは私は何か違うことをしなければならないのですか?

+4

これは設計上のものですが、バッフリングのデザインです。連絡先の許可は非常に重要です。通常、数百人の個人データを保護します。 GET_ACCOUNTSを使用するために、そのことをユーザーに尋ねる必要はありません。ユーザーはそれを受け入れるべきではありません。 – Tom

答えて

4

GET_ACCOUNTS許可が

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

    • android.permission.READ_CONTACTSと共に、android.permission-group.CONTACTSグループの一部であります

    これは、CONTACTSのメッセージが表示される理由です。

    グループ内で1つの権限を要求すると、そのグループ内のすべての権限が取得されます。 許可の詳細については、M here

  • +2

    うーん.. thats奇妙な。 GET_ACCOUNTS権限を求める場合は、ユーザーが連絡先を読み込もうとしていると誤解しているようです。いいえ? –

    +1

    これは、GoogleがshouldShowRequestPermissionRationaleメソッドを作った理由です。特定のアクセス許可を求める理由をユーザーに説明できるようにします。 – DDsix

    +2

    私はそれを持っていますが、呼び出されていないように見えます。だから: –

    -1

    お客様のアプリを更新しています。この午後に、ユーザーはGoogle+でログインできます。実行時にGET_ACCOUNTS権限をチェックする必要はないかもしれません。 GET_ACCOUNTS権限をandroid:maxSdkVersion="22"で修飾するようにマニフェストを更新しました。

    Marshmallowを実行しているNexus 5では、実行時の権限ダイアログを表示せずにGoogle+を使用して正常にログインできました。 [設定]> [アプリ]> [クライアントのアプリ]> [権限]にも連絡先が表示されません。マシュマロにおける挙動の変化を反映するためGET_ACCOUNTS

    <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"/> 
    

    ドキュメントhereに記載されています。

    +0

    Manifestのtihs方法で 'maxSdkVersion'を指定することに副作用がありますか? –

    +0

    そう信じてはいけません。 Marshmallowでは、自分の署名とは異なる署名でAppによって作成されたアカウントにアクセスする必要がある場合は、実行時にGET_ACCOUNTS権限を要求する必要があります。 – fingertricks

    +0

    maxSdkVersion 22を使用しないでください。これは、マーシュマローデバイスがあなたのアプリをPlayストアで見ることができないことを意味します。 –

    関連する問題