大家好我试图从联系人数据库中使用ContentResolver与这些字段的联系人信息想要获取姓名,号码,FORMATTED_ADDRESS,PHOTO 联系人的详细信息在一个单一的查询。在单个查询中获取联系人的详细信息
所以基本上我需要每个联系人3个查询来获得这些 的细节。
我想知道的是,有没有更简单,更高效的方法来实现这个目标。
但使用下面的代码我收到异常。
java.lang.IllegalArgumentException: Invalid column data1
任何机构都可以帮助我找到相同的解决方案。
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] { ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS,
ContactsContract.CommonDataKinds.Photo.PHOTO};
String selection = ContactsContract.Contacts.HAS_PHONE_NUMBER + " = '1'";
String[] selectionArgs = null;
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
Cursor contacts = getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);
感谢您的答复,但我在执行代码'java.lang.IllegalArgumentException异常后得到同样的异常:无效的列data1' –
现在就试试吧,你有不好的uri。我没有立即注意到它。 – Sajmon
删除选择和selectionArgs后,它为我工作的查询,但它不会给我FORMATTED_ADDRESS代替这个它它给PHONE_NUMBER不知道为什么。但在调试时,我发现它返回的列是“_id,display_name,data1,data1,data15”,它不会给它们的原始名称。还有一个问题是它使光标没有更多的问题。的记录,并且我在通讯簿中有更多记录 –