【问题标题】:access to contact data访问联系数据
【发布时间】:2010-09-03 00:42:26
【问题描述】:

唉,我的电话簿中有大约 500 个联系人,由于某种原因,在将它们与 Thunderbird 同步后,显示名称是随机的最后一个,第一个……最后一个。所以我想我会先把一个快速的小部件放在一起,把我的显示名称重新做一遍。我使用的代码如下,但是我没有得到最后一个/第一个值。光标中的键存在(data1,data2),但值分别为“1”和空。有什么想法吗?

Cursor cursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, null, null, null);

        while (cursor.moveToNext() != false) {

        String id = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID));

        String fname = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));

        String lname = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));

        if (lname != null && lname.length() > 0) {

              String sDName = lname + "," + fname;

              ContentValues values = new ContentValues();

              values.put(ContactsContract.Contacts.DISPLAY_NAME, sDName);

              getContentResolver().update(ContactsContract.Data.CONTENT_URI, values, ContactsContract.Contacts._ID+"=", new String[] {id});

        }

        }

【问题讨论】:

    标签: android contacts contactscontract


    【解决方案1】:

    ContactsContract.Data 在共享表中包含所有各种类型的信息,例如邮政地址、电话号码、电子邮件、网站、照片等。

    您必须过滤掉包含您感兴趣的信息的行。

    在查询中,添加 WHERE 子句:

    query(ContactsContract.Data.CONTENT_URI,  Data.MIMETYPE + "=?", 
        new String[]{StructuredName.CONTENT_ITEM_TYPE}, null, null);
    

    请参阅ContactsContract.Data 的文档

    【讨论】:

    • 太好了,这让我到达了我需要去的地方。
    猜你喜欢
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    相关资源
    最近更新 更多