首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android -获取昵称和昵称类型

Android -获取昵称和昵称类型
EN

Stack Overflow用户
提问于 2011-06-29 19:41:00
回答 2查看 2.6K关注 0票数 1

我已经尝试了几个小时来获取联系人的昵称,但仍然不能让他们工作,我被告知他们在一个与电话号码等不同的表中。但我不知道如何访问它们。

我能找到的最接近的是这个..

代码语言:javascript
复制
Cursor cursor = context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, ContactsContract.Contacts._ID +" = ?", new String[]{String.valueOf(recordId)}, null);
    while (cursor.moveToNext()) {
       Cursor nickname = context.getContentResolver().query( ContactsContract.Data.CONTENT_URI, null, ContactsContract.CommonDataKinds.Nickname.CONTACT_ID +" = "+ recordId, null, null); 
       while (nickname.moveToNext()) { 
           try {
           String nicknameName = nickname.getString(nickname.getColumnIndex(ContactsContract.CommonDataKinds.Nickname.NAME));
           String nicknameType = nickname.getString(nickname.getColumnIndex(ContactsContract.CommonDataKinds.Nickname.TYPE));

           switch (Integer.valueOf(nicknameType)) {
           case 1: nicknameType = "TYPE_HOME"; break;
           }
           list.add(new KeyValue("Nickname:" + nicknameType, nicknameName));
           } catch (Exception e) { continue; }
       }
       nickname.close();
    }

这将获得联系人的所有数据以及类型,例如:Thomas Owers 1这很好,但它没有给我数据,所以它给出了电子邮件,电话,姓名,昵称,但我无法区分它们。

任何帮助都将非常感谢,谢谢!:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-04 18:08:50

我在网上搜索了几个小时后才找到这个昵称……

代码语言:javascript
复制
ArrayList<KeyValue> list = new ArrayList<KeyValue>();

    Cursor cursor = context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, ContactsContract.Contacts._ID +" = ?", new String[]{String.valueOf(recordId)}, null);
    while (cursor.moveToNext()) {
       String where = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
       String[] params = new String[] {String.valueOf(recordId), ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE};
       Cursor nickname = context.getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, where, params, null); 
       while (nickname.moveToNext()) { 
            String nicknameName = nickname.getString(nickname.getColumnIndex(ContactsContract.CommonDataKinds.Nickname.NAME));
            String nicknameType = nickname.getString(nickname.getColumnIndex(ContactsContract.CommonDataKinds.Nickname.TYPE));
            switch (Integer.valueOf(nicknameType)) {
            case 1: nicknameType = "Default"; break;
            case 2: nicknameType = "OtherName"; break;
            case 3: nicknameType = "MaidenName"; break;
            case 4: nicknameType = "ShortName"; break;
            case 5: nicknameType = "Initials"; break;
            }
            list.add(new KeyValue("Nickname:" + nicknameType, nicknameName));
       }
       nickname.close();
    }
    return list;

此代码获得昵称!:)

票数 6
EN

Stack Overflow用户

发布于 2011-06-29 20:23:51

不要获取所有数据。仅使用投影获取所需数据

代码语言:javascript
复制
String[] proj ={ContactsContract.CommonDataKinds.Nickname.NAME, ContactsContract.CommonDataKinds.Nickname.TYPE};

Cursor nickname = getContentResolver().query( ContactsContract.Data.CONTENT_URI, proj,ContactsContract.CommonDataKinds.Nickname.CONTACT_ID +" = "+ recordId, null, null); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6520060

复制
相关文章

相似问题

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