首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ContactsContract android中的问题

ContactsContract android中的问题
EN

Stack Overflow用户
提问于 2011-09-26 09:39:31
回答 1查看 618关注 0票数 2

我有一个宏达电legend.In,它的手机联系人,它显示4-5 contacts.But,当我在我的应用程序中查询它时,它显示了近45个联系人,我认为它的gmail联系人。

managedQuery(ContactsContract.Contacts.CONTENT_URI,

代码语言:javascript
复制
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);

代码语言:javascript
复制
> 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)中,但是我并没有确切地知道该做什么--去完成这个任务。

有人能帮我弄清楚怎么做吗。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-26 09:53:46

你可以这样做:

代码语言:javascript
复制
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类型:

代码语言:javascript
复制
final String mimeType = cursor.getString(cursor.getColumnIndex(
    RawContactsEntity.MIMETYPE));

并依赖于MIME类型读取相应的数据类型:

代码语言:javascript
复制
if (StructuredName.CONTENT_ITEM_TYPE.equals(mimeType)) {
    readNameData(cursor);
} else if (Email.CONTENT_ITEM_TYPE.equals(mimeType)) {
    addEmailData(cursor);
}

诸若此类。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7553241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档