我的AndroidManifest:
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
我的build.gradle:
classpath 'com.android.tools.build:gradle:2.1.2'
我的活动onCreate()
:
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.GET_ACCOUNTS)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(AnyMailMainActivity.this,
new String[]{Manifest.permission.GET_ACCOUNTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
} else {
mContactPermissionGranted = true;
}
} else {
mContactPermissionGranted = true;
}
我的onRequestPermissionsResult()
:
```
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
mContactPermissionGranted = true;
} else {
mContactPermissionGranted = false;
}
return;
}
}
}
```
尽管如此,我还没有收到请求联系人对话框&#39;没有获得GET_ACCOUNTS的任何许可。 目的是从Android M及更高版本的设备获取谷歌电子邮件,而不显示谷歌的帐户选择器。就像我们在Android M之前获取帐户列表一样。
答案 0 :(得分:0)
您是否测试过您是否已经可以访问该帐户,或者您是否基于没有对话框进行假设?
GET_ACCOUNTS
权限位于联系人群组下,因此,如果您已在该群组中授予了其他权限(READ_CONTACTS
或WRITE_CONTACTS
),则您已拥有帐户访问权限。
测试时需要注意的另一件事 - 文档现在声明:
如果应用程序共享管理帐户的身份验证器的签名,则不需要“GET_ACCOUNTS”权限来读取有关该帐户的信息。