Andorid帐户列表为空

时间:2019-04-23 10:07:45

标签: android accountmanager

我在一个项目中,需要列出用户设备中的所有帐户(Gmail,Exchage等)。

第一件事首先;我的代码段在下面;

public class MainActivity extends AppCompatActivity {
    public static final int PERMS_REQUEST_CODE = 1;
    private static final String LOG_TAG = MainActivity.class.getSimpleName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) {
            if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.GET_ACCOUNTS)) {
                ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.GET_ACCOUNTS}, PERMS_REQUEST_CODE);
            } else {
                ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.GET_ACCOUNTS}, PERMS_REQUEST_CODE);
            }
        } else {
            AccountManager manager = (AccountManager) getSystemService(ACCOUNT_SERVICE);
            Account[] accounts = manager.getAccounts();
            Log.d(LOG_TAG, "Done! List of accounts: " + accounts.length);
        }
    }
}

它按预期显示在屏幕下方,并且允许;

Request of accessing Contacts

但是,下面一行中检索到的帐户列表为空;

Account[] accounts = manager.getAccounts();

顺便说一下,我在设备上有一个帐户;

List of accounts on the device

我想念什么?

注意:我在网上搜索了this之类的问题,但没有找到答案。他们指向“权限不足”,但我的应用程序具有。

谢谢...

1 个答案:

答案 0 :(得分:0)

作为@MikeM。的评论;将Manifest.permission.READ_CONTACTS都添加到Manifest和运行时权限请求中可以解决此问题。很奇怪,但是正在工作...

谢谢