在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设备上,它可以正常工作。
答案 0 :(得分:23)
从Android M,API 23开始,除了在清单中声明它们之外,您还需要在运行时请求一些权限。
有关详细信息,请参阅此链接:https://developer.android.com/training/permissions/requesting.html
作为一种快速解决方法,您可以在jsonResult
中将targetSdkVersion
设置为22。
请注意,即使使用此解决方法,如果用户进入设置禁用您的应用的权限,您的应用也会崩溃。
这是受此新变更影响的权限列表: