如何访问联系人合同配置文件



我试图阅读完整的个人资料信息,例如(全名,电话,地址,邮件......

我已经到处寻找一个很好的示例代码。我尝试了很多方法(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

我使用以下代码找到了解决方案:

  1. 获取 URI 配置文件
  2. 使用空投影将指向 URI 内容的光标装箱。因为对于配置文件,数据的保存方式与普通联系人不同。
  3. 使用 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"));

相关内容

  • 没有找到相关文章

最新更新