2011-07-05 32 views
4

我想根据类型检索选定联系人的电话号码。我想打印电话号码类型和关联的电话号码。在Android中输入电话号码

我可以显示选定联系人的电话号码,但无法区分类型。

下面是我使用的样例代码:

if (Integer.parseInt(cursor.getString(
    cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 
    Cursor phoneCursor = getContentResolver().query(
     ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
     null, 
     ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
     new String[]{contactId,}, null 
    ); 
    while (phoneCursor.moveToNext()) { 
     // Do something with phones 
     System.out.println("phone numbers :" 
     + phoneCursor.getString(
      phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER) 
     ) 
     ); 
    } 
    phoneCursor.close(); 
} 

回答

3

为宠物这个链接可以尝试

http://www.vtgroup.com/#ContactsContract

 // Get all phone numbers. 
     // 
     Cursor phones = cr.query(Phone.CONTENT_URI, null, 
      Phone.CONTACT_ID + " = " + contactId, null, null); 
     while (phones.moveToNext()) { 
      String number = phones.getString(phones.getColumnIndex(Phone.NUMBER)); 
      int type = phones.getInt(phones.getColumnIndex(Phone.TYPE)); 
      switch (type) { 
       case Phone.TYPE_HOME: 
        // do something with the Home number here... 
        break; 
       case Phone.TYPE_MOBILE: 
        // do something with the Mobile number here... 
        break; 
       case Phone.TYPE_WORK: 
        // do something with the Work number here... 
        break; 
       } 
     } 
     phones.close(); 
6

以防万一你不希望自己在这里做是一个包含android允许的所有主类型的类型列表。

String sType = ""; 
switch (type) { 
case Phone.TYPE_HOME: 
    sType = "Home"; 
    break; 
case Phone.TYPE_MOBILE: 
    sType = "Mobile"; 
    break; 
case Phone.TYPE_WORK: 
    sType = "Work"; 
    break; 
case Phone.TYPE_FAX_HOME: 
    sType = "Home Fax"; 
    break; 
case Phone.TYPE_FAX_WORK: 
    sType = "Work Fax"; 
    break; 
case Phone.TYPE_MAIN: 
    sType = "Main"; 
    break; 
case Phone.TYPE_OTHER: 
    sType = "Other"; 
    break; 
case Phone.TYPE_CUSTOM: 
    sType = "Custom"; 
    break; 
case Phone.TYPE_PAGER: 
    sType = "Pager"; 
    break; 
} 
+0

对于Phone.TYPE_CUSTOM,你可能希望S型设置为ContactsContract.CommonDataKinds.Phone.LABEL的价值 – d2vid

2

这里的完整列表:

String sType = ""; 
    switch (type) { 
    case Phone.TYPE_HOME: 
     sType = "Home"; 
     break; 
    case Phone.TYPE_MOBILE: 
     sType = "Mobile"; 
     break; 
    case Phone.TYPE_WORK: 
     sType = "Work"; 
     break; 
    case Phone.TYPE_FAX_HOME: 
     sType = "Home Fax"; 
     break; 
    case Phone.TYPE_FAX_WORK: 
     sType = "Work Fax"; 
     break; 
    case Phone.TYPE_MAIN: 
     sType = "Main"; 
     break; 
    case Phone.TYPE_OTHER: 
     sType = "Other"; 
     break; 
    case Phone.TYPE_CUSTOM: 
     sType = "Custom"; 
     break; 
    case Phone.TYPE_PAGER: 
     sType = "Pager"; 
     break; 
    case Phone.TYPE_ASSISTANT: 
     sType = "Assistant"; 
     break; 
    case Phone.TYPE_CALLBACK: 
     sType = "Callback"; 
     break; 
    case Phone.TYPE_CAR: 
     sType = "Car"; 
     break; 
    case Phone.TYPE_COMPANY_MAIN: 
     sType = "Company Main"; 
     break; 
    case Phone.TYPE_ISDN: 
     sType = "ISDN"; 
     break; 
    case Phone.TYPE_MMS: 
     sType = "MMS"; 
     break; 
    case Phone.TYPE_OTHER_FAX: 
     sType = "Other Fax"; 
     break; 
    case Phone.TYPE_RADIO: 
     sType = "Radio"; 
     break; 
    case Phone.TYPE_TELEX: 
     sType = "Telex"; 
     break; 
    case Phone.TYPE_TTY_TDD: 
     sType = "TTY TDD"; 
     break; 
    case Phone.TYPE_WORK_MOBILE: 
     sType = "Work Mobile"; 
     break; 
    case Phone.TYPE_WORK_PAGER: 
     sType = "Work Pager"; 
     break; 
    }