我的应用程序中有一个联系人选择器,它返回一个联系人,然后我将一些信息存储到 sharedPreferences 中。在共享首选项中,我使用查找键来保存数据(正如 android 文档所建议的那样)
这部分看起来都很好,我得到并存储了查找键。
然后我的问题是我来取回通过查找键查找联系人的联系人有时似乎返回 null
以下详细信息来自联系人选择器
Contact lookup key from the contact picker: 850i%2bw7vj56otre6eqa9b9t7wa%3d%3d
Contact id: 2958
然后我尝试使用以下代码根据查找键查找联系人以获取联系人 ID:
Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, Uri.encode("850i%2bw7vj56otre6eqa9b9t7wa%3d%3d"));
Uri res = ContactsContract.Contacts.lookupContact(context.getContentResolver(), lookupUri);
执行此操作后,“res”为空,即使我知道 id 来自联系人选择器是有效的。
在查找中添加一些记录 res uri 是:
content://com.android.contacts/contacts/lookup/850i%252bw7vj56otre6eqa9b9t7wa%253d%253d
哪个(一旦编码)是我认为应该的。谁能发现我做错了什么?
问题是,它适用于大多数人(包括我自己),但有些人遇到了这个问题。