我有一个宏达电legend.In,它的手机联系人,它显示4-5 contacts.But,当我在我的应用程序中查询它时,它显示了近45个联系人,我认为它的gmail联系人。
managedQuery(ContactsContract.Contacts.CONTENT_URI,
String[] Projection = new String[] { ContactsContract.Contacts.\_ID, ContactsContract.Contacts.DISPLAY\_NAME, ContactsContract.Contacts.PHOTO\_ID, ContactsContract.Contacts.HAS\_PHONE\_NUMBER, ContactsContract.Contacts.STARRED};游标光标=
投影,null,null,null);
我得到了所有的细节与照片,以及在一个列表。现在我需要得到特别的联系方式,比如他的所有电话号码,电子邮件,照片etc.For --我正在写这个查询
final String[] projection = new String[] { ContactsContract.CommonDataKinds.Phone.CONTACT\_ID, ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.IS\_PRIMARY, }; final Cursor phone = managedQuery( ContactsContract.CommonDataKinds.Phone.CONTENT\_URI, projection, ContactsContract.CommonDataKinds.Phone.CONTACT\_ID + "=?", new String[]{contactId}, null);
> if(phone.moveToFirst()) {
> final int contactNumberColumnIndex =
> phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
> final int contactTypeColumnIndex =
> phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE);我得到了电话联系的所有细节,但不是所有其他联系人。我已经读到,所有这些细节都存储在共享表(ContactsContract.Data.CONTENT_URI)中,但是我并没有确切地知道该做什么--去完成这个任务。
有人能帮我弄清楚怎么做吗。
谢谢
发布于 2011-09-26 09:53:46
你可以这样做:
getContentResolver().query(
RawContactsEntity.CONTENT_URI,
// projection
new String[] {
BaseColumns._ID,
RawContactsEntity.MIMETYPE,
// DATA columns are interpreted according to MIMETYPE
// Project only union of data columns needed
RawContactsEntity.DATA1,
RawContactsEntity.DATA2,
RawContactsEntity.DATA3,
RawContactsEntity.DATA4,
RawContactsEntity.DATA7,
RawContactsEntity.DATA9,
RawContactsEntity.DATA10,
},
// selection
RawContactsEntity.DELETED + "<>1 AND " +
RawContactsEntity.MIMETYPE + " IN ('" +
StructuredName.CONTENT_ITEM_TYPE + "','" +
Email.CONTENT_ITEM_TYPE + "','" +
Phone.CONTENT_ITEM_TYPE + "','" +
StructuredPostal.CONTENT_ITEM_TYPE + "','" +
Organization.CONTENT_ITEM_TYPE + "')",
// selection params
null,
// sorting
null);接下来遍历游标,并首先读取MIME类型:
final String mimeType = cursor.getString(cursor.getColumnIndex(
RawContactsEntity.MIMETYPE));并依赖于MIME类型读取相应的数据类型:
if (StructuredName.CONTENT_ITEM_TYPE.equals(mimeType)) {
readNameData(cursor);
} else if (Email.CONTENT_ITEM_TYPE.equals(mimeType)) {
addEmailData(cursor);
}诸若此类。
https://stackoverflow.com/questions/7553241
复制相似问题