Android 6 getAccountName() 缺失 android.permission.GET_ACCOUNTS
Android 6 getAccountName() Missing android.permission.GET_ACCOUNTS
我在 Android 6 设备上 运行 时收到以下异常。
java.lang.SecurityException: Missing android.permission.GET_ACCOUNTS
这看起来像是一个相当简单的异常,但对我来说并非如此。
我的清单如下所示:
<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
...
抛出这个异常的代码是下面一行:
mLoggedInEmail = Plus.AccountApi.getAccountName(mGoogleApiClient);
在 android 5 设备上它工作正常。
从 Android M,API 23 开始,除了在清单中声明它们之外,您还需要在运行时请求一些权限。
查看此 link 了解更多信息:https://developer.android.com/training/permissions/requesting.html
作为快速解决方法,您可以在 build.gradle
中将 targetSdkVersion
设置为 22。
请记住,即使采用此解决方法,如果用户在设置中禁用您应用的权限,您的应用也会崩溃。
这是受此新更改影响的权限列表:
- ACCESS_COARSE_LOCATION
- ACCESS_FINE_LOCATION
- ADD_VOICEMAIL
- BODY_SENSORS
- CALL_PHONE
- 相机
- 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
我在 Android 6 设备上 运行 时收到以下异常。
java.lang.SecurityException: Missing android.permission.GET_ACCOUNTS
这看起来像是一个相当简单的异常,但对我来说并非如此。 我的清单如下所示:
<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
...
抛出这个异常的代码是下面一行:
mLoggedInEmail = Plus.AccountApi.getAccountName(mGoogleApiClient);
在 android 5 设备上它工作正常。
从 Android M,API 23 开始,除了在清单中声明它们之外,您还需要在运行时请求一些权限。
查看此 link 了解更多信息:https://developer.android.com/training/permissions/requesting.html
作为快速解决方法,您可以在 build.gradle
中将 targetSdkVersion
设置为 22。
请记住,即使采用此解决方法,如果用户在设置中禁用您应用的权限,您的应用也会崩溃。
这是受此新更改影响的权限列表:
- ACCESS_COARSE_LOCATION
- ACCESS_FINE_LOCATION
- ADD_VOICEMAIL
- BODY_SENSORS
- CALL_PHONE
- 相机
- 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