我试图阅读完整的个人资料信息,例如(全名,电话,地址,邮件......
我已经到处寻找一个很好的示例代码。我尝试了很多方法(Uri =>光标)来访问配置文件。目前,我只能获取(个人资料联系人的)全名,仅此而已。
我可以使用 Intent 获取其他联系人的数据,并发送到"联系人"应用,但我无法读取个人资料联系人(只有全名)。
我已经在清单文件中添加了READ_PROFILE权限。
使用以下代码,我得到全名(我也可以分别访问名字和姓氏):
Uri uriProfile = Uri.withAppendedPath(ContactsContract.Profile.CONTENT_URI,
ContactsContract.Contacts.Data.CONTENT_DIRECTORY);
Cursor cursorProfile = this.getContentResolver().query(uriProfile,
null, null, null, null);
String projection = Profile.DISPLAY_NAME;
String profileName = cursorProfile.getString(cursorProfile.getColumnIndex(projection);
但是当我使用以下投影来获取电话号码时,它会返回错误并且应用程序停止工作:
String projection = ContactsContract.CommonDataKinds.Phone.NUMBER
我使用以下代码找到了解决方案:
- 获取 URI 配置文件
- 使用空投影将指向 URI 内容的光标装箱。因为对于配置文件,数据的保存方式与普通联系人不同。
- 使用 MIMETYPE 将光标指向所需的数据。
Uri uriProfile = Uri.withAppendedPath(ContactsContract.Profile.CONTENT_URI,
ContactsContract.Contacts.Data.CONTENT_DIRECTORY);
Cursor cursorProfile = getApplicationContext().getContentResolver().query(uriProfile,
null, null, null, null);
String cursorProfile_MIMIETYPE = cursorProfile.getString(cursorProfile.getColumnIndex("MIMETYPE"));