android - 如何通过带有 LOOKUP_KEY 的 Uri 使用投影检索联系人号码?
问题描述
我正在尝试使用以下代码获取联系人姓名及其电话号码:
String id = readFile("contactlookupkey");
Uri uri = Uri.parse (ContactsContract.Contacts.CONTENT_LOOKUP_URI + "/" + id);
String[] projection = new String[] {
Contacts._ID,
Contacts.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER
};
Cursor cursor = context.getContentResolver().query (
uri,
projection,
null,
null,
null);
if (!cursor.moveToNext()) // move to first (and only) row.
throw new IllegalStateException ("contact no longer exists for key");
String name = cursor.getString(1);
String phone=cursor.getString(2);
cursor.close();
但是由于 ContactsContract.CommonDataKinds.Phone.NUMBER,在执行查询时出现非法参数异常。
问题是我没有看到任何其他方式来获取电话号码,同时仍然使用 URI+loopkey。
可以做些什么来获取电话号码?
解决方案
您是否使用了正确的 URI?
尝试切换:
ContactsContract.Contacts.CONTENT_LOOKUP_URI
至
ContactsContract.CommonDataKinds.Phone.CONTENT_URI
推荐阅读
- javascript - 当我再次单击它时使输入消失
- java - Listviewitem 通过引用而不是按值传递(可解析和可序列化)
- coq - 如何找到自然数列表的最小元素
- android - Flutter 应用仅支持 Playstore 中的 5,759 台设备。什么是应用程序问题?
- python - 如何将emoji unicode转换为emoji?
- java - 在VSC中选择一个Java项目的主类
- ios - Admob 搜索未在其搜索中显示我的应用
- performance - Numba 快速数学不会提高速度
- three.js - 即使在 needsupdate 设置为 true 后,BufferGeometry 也不会更新
- node.js - Nodejs没有在for循环中将数据更新到mongodb