2015-10-08 8 views
14

Ich bekomme die folgende Ausnahme während auf einem Android 6-Gerät ausgeführt wird.Android 6 getAccountName() fehlt android.permission.GET_ACCOUNTS

java.lang.SecurityException: Missing android.permission.GET_ACCOUNTS 

Das sieht wie eine ziemlich geradlinige Ausnahme aus, aber für mich ist es nicht. Mein Manifest sieht wie folgt aus:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="..." > 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<uses-permission android:name="android.permission.USE_CREDENTIALS" /> 

<application 
    ... 

Das Stück Code, der diese Ausnahme wirft, ist die folgende Zeile ein:

mLoggedInEmail = Plus.AccountApi.getAccountName(mGoogleApiClient); 

auf einem Android-5-Gerät funktioniert es gut.

Antwort

23

Beginnend mit Android M, API 23, müssen Sie zur Laufzeit einige Berechtigungen anfordern und sie in Ihrem Manifest deklarieren.

Siehe diesen Link für weitere Informationen: https://developer.android.com/training/permissions/requesting.html

Als schnelle Abhilfe können Sie Ihre targetSdkVersion-22 in Ihrem build.gradle einstellen.

Bedenken Sie, dass Ihre App auch bei dieser Problemumgehung abstürzt, wenn der Benutzer die Berechtigung für Ihre App deaktiviert.

Dies ist die Liste der Berechtigungen durch diese neue Änderung betroffen:

  • ACCESS_COARSE_LOCATION
  • ACCESS_FINE_LOCATION
  • ADD_VOICEMAIL
  • BODY_SENSORS
  • CALL_PHONE
  • KAMERA
  • GET_ACCOUNTS
  • PROCESS_OUTGOING_CALLS
  • READ_CALENDAR
  • READ_CALL_LOG
  • READ_CELL_BROADCASTS
  • READ_CONTACTS
  • READ_EXTERNAL_STORAGE
  • READ_PHONE_STATE
  • READ_SMS
  • RECEIVE_MMS
  • RECEIVE_SMS
  • RECEIVE_WAP_PUSH
  • RECORD_AUDIO
  • SEND_SMS
  • USE_SIP
  • WRITE_CALENDAR
  • WRITE_CALL_LOG
  • WRITE_CONTACTS
  • WRITE_EXTERNAL_STORAGE
+0

wie zur Laufzeit verlangen?und prüfen, ob der Zugriff gegeben ist oder nicht –

+0

Ich vermisse USE_CREDENTIALS nach dem Update auf Android 2.2 und SDK-Version 24 für das Projekt verwenden. –