gpt4 book ai didi

android - 在单个查询中获取联系人的详细信息

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:51:59 27 4
gpt4 key购买 nike

大家好,我正在尝试使用 ContentResolver 从联系人数据库中获取联系人信息,这些字段想要获取姓名、号码、FORMATTED_ADDRESS、照片单个查询中联系人的详细信息。

所以基本上我需要为每个联系人进行 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);

最佳答案

也许问题出在selection。用我的方法替换你的方法。

Uri uri = ContactsContract.CommonDataKinds.Phone.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 + " = ?";
String[] selectionArgs = { String.valueOf(1) };
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";

Cursor contacts = getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);

您应该始终使用参数化语句。你的做法很危险。而且你的 URI 很糟糕。

关于android - 在单个查询中获取联系人的详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11031136/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com