【问题标题】:Can't get GET_ACCOUNTS permission for Android M无法获得 Android M 的 GET_ACCOUNTS 权限
【发布时间】:2016-11-03 22:29:38
【问题描述】:

我的 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;
            }
        }
    }

```

不过,我既没有收到“请求联系对话框”,也没有获得 GET_ACCOUNTS 的任何权限。 目的是在不显示谷歌帐户选择器的情况下从 Android M 及更高版本的设备获取谷歌电子邮件。就像我们在 Android M 之前获取帐户列表的方式一样。

【问题讨论】:

    标签: android android-6.0-marshmallow android-permissions


    【解决方案1】:

    您是否测试过您是否已经可以访问该帐户,或者您是否在没有对话的情况下做出假设?

    GET_ACCOUNTS 权限位于联系人组下,因此如果您已授予该组中的其他权限(READ_CONTACTSWRITE_CONTACTS),则您已经拥有帐户访问权限。

    测试时需要注意的另一件事 - 文档现在指出:

    如果应用共享管理帐户的身份验证器的签名,则无需“GET_ACCOUNTS”权限即可读取有关该帐户的信息。

    【讨论】:

    • 如果我已经拥有访问权限,那么我应该在我没有的 checkSelfPermission 步骤中获得 permission_granted。
    • 您没有包含清单 - 您的活动是否没有历史记录?你在运行什么平台,大概是 M?
    猜你喜欢
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    • 2019-05-19
    • 2016-07-15
    • 2013-08-28
    相关资源
    最近更新 更多