12

Sto tentando di aggiornare la mia app con le nuove autorizzazioni di Android M che utilizzano l'accesso Google+, ma quando faccio un checkSelfPermission(Manifest.permission.GET_ACCOUNTS) viene visualizzata la finestra di dialogo "Consenti a MyApp di accedere ai tuoi contatti?" con i pulsanti Nega e Consenti.Messaggio errato con autorizzazione GET_ACCOUNTS

Questo sembra strano per il permesso GET_ACCOUNTS. Non dovrebbe invece dire qualcosa relativo all'accesso ai tuoi account? è un insetto? O dovrei fare qualcosa di diverso?

+4

E 'di progettazione, ma il design sconcertante. Le autorizzazioni di contatto sono estremamente importanti, in genere proteggendo i dati privati ​​di centinaia di persone. Dover chiedere all'utente, per poter utilizzare GET_ACCOUNTS, non ha senso - l'utente non dovrebbe accettarlo. – Tom

risposta

4

L'autorizzazione GET_ACCOUNTS fa parte del gruppo android.permission-group.CONTACTS, insieme ai

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

Ecco perché si ottiene il messaggio per CONTATTI.

Così quando chiedi un permesso in un gruppo, li otterrete tutti in quel gruppo. Puoi trovare ulteriori informazioni sull'autorizzazione in Android M here

+2

hmm .. questo è strano. quindi se chiedessimo il permesso a GET_ACCOUNTS sembra fuorviante per gli utenti dire che stiamo provando a leggere i contatti. no? –

+1

Bene, ecco perché Google ha creato il metodo shouldShowRequestPermissionRationale, in modo che tu possa spiegare all'utente come mai chiedi una determinata autorizzazione. – DDsix

+2

Io ce l'ho ma sembra che non venga chiamato e sembra che Android determini se deve mostrarlo o meno. Quindi :( –

-1

stavo aggiornando l'app di un cliente questo pomeriggio che consente agli utenti di accedere con Google+. Potrebbe non essere necessario controllare l'autorizzazione GET_ACCOUNTS in fase di runtime. Ho aggiornato il manifest per qualificare l'autorizzazione GET_ACCOUNTS con android:maxSdkVersion="22".

Su un Nexus 5 su cui è in esecuzione Marshmallow sono riuscito ad accedere correttamente a Google+ senza visualizzare una finestra di dialogo delle autorizzazioni di runtime. I contatti non vengono visualizzati in Impostazioni> App> [app del mio cliente]> Autorizzazioni.

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

documentazione per GET_ACCOUNTS riflettono cambiamento comportamentale nel Marshmallow è descritto here.

+0

ci sono effetti collaterali per specificare 'maxSdkVersion' nel modo Manifesto? –

+0

Non ci credo, no. Su Marshmallow dovresti richiedere l'autorizzazione GET_ACCOUNTS in fase di esecuzione se devi accedere a tutti gli account creati da un'app con una firma diversa dalla tua. – fingertricks

+0

Non utilizzare maxSdkVersion 22. Ciò significa che nessun dispositivo Marshmallow vedrà la tua app nel Play Store. –

Problemi correlati