【问题标题】:Retrieving Android Contacts检索 Android 联系人
【发布时间】:2011-11-18 17:21:15
【问题描述】:
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if (cur.getCount() > 0) {
    while (cur.moveToNext()) {
        String id = cur.getString(
        cur.getColumnIndex(ContactsContract.Contacts._ID));
        String name = cur.getString(
        cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

        if (name.equals(selected) && Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {

            Cursor pCur = cr.query(
            ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " =?", new String[] {
                id
            }, null);
            finalsend = ContactsContract.CommonDataKinds.Phone.NUMBER;
            while (pCur.moveToNext()) {

            }
            pCur.close();

        }

代码应该通过联系人查找与“选定”变量匹配的联系人,该变量似乎工作正常,但随后应该切换到ContactsContract.CommonDataKinds.Phone.CONTENT_URI,并通过匹配 ID 找到相同的联系人并给出我为该联系人保存的电话号码。

每次返回“Data1”时,我做错了什么?这可能是一个愚蠢的错误,但感谢您的帮助。

【问题讨论】:

    标签: android contacts contactscontract


    【解决方案1】:

    以下代码 sn-p 对我有用:

    String id , name;
    ContentResolver cr = getContentResolver();
    
         String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
    
         Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,  null, null, null, sortOrder);
    
    
    
          if (cur.getCount() > 0) {
    
    
                while (cur.moveToNext()) {
    
    
    
                    id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
    
                    name = cur.getString( cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                    Log.i(tag, "Id is "+ id+"\t Name is"+name);
    
                if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0){                      
    
    
                            Cursor pCur = cr.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
    
                                null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id}, null);
    
    
    
                            while (pCur.moveToNext()) {
    
    
                    // Do something with phones
    
    
    
                           int phNumber = pCur.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER);
    
                           String phn = pCur.getString(phNumber);
    
                           Log.i("phn number",  phn);
    
    
    
                        } 
    
                        pCur.close();
    
                    }
    
                    }
    
        }
    

    【讨论】:

    • 非常感谢。我缺少的部分是int phNumber = pCur.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER);
    猜你喜欢
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 2012-08-26
    • 2012-03-12
    • 1970-01-01
    相关资源
    最近更新 更多