android - Android 帐户列表为空
问题描述
我正在进行一个项目,我需要列出用户设备中的所有帐户(Gmail、Exchange 等)。
首先要做的事;我的代码片段如下;
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);
}
}
}
正如预期的那样,它显示在屏幕下方,我允许它;
但是,在下面一行中检索到的帐户列表是空的;
Account[] accounts = manager.getAccounts();
顺便说一句,我在设备上有一个帐户;
我错过了什么?
注意:我搜索了网络和类似的问题,但没有办法。他们指出“缺乏权限”,但我的应用程序有。
解决方案
正如@MikeM. 的评论;将 Manifest.permission.READ_CONTACTS 添加到 Manifest 和运行时权限请求解决了这个问题。奇怪但工作...
谢谢
推荐阅读
- file-type - 如何检查文件是否为文本文件?
- scala - Scala Future 在块内调用惰性方法不起作用
- mysql - 如何创建一列全表的平均数
- symfony - Symfony 3 - 管理两种身份验证模式,注销问题
- javascript - 将复杂数据属性推入一个数组的问题
- vue.js - Vue 生命周期钩子作为事件 (hook:beforeDestroy)
- spring-kafka - 将 apache kafka polling 迁移到 spring kafka
- javascript - 如何在 sharepoint 中使用 CSOM Javascript 创建页面..?
- encryption - 如何加密 ym 客户端下载路径的链接?
- sql - aws Glue:是否可以仅从数据库中提取特定数据?