2012-04-07 190 views
0

假设我有一个编辑文本和一个按钮。在编辑文本中,您可以输入一个数字,然后当您点击该按钮时,它将显示联系信息或返回该联系人的姓名。从号码获取联系人姓名

我已经尝试了各种方法提供没有运气。我成功地获得了最远的一个是以下...但我没有运气返回这个名字。

Cursor phoneCursor = null; 
    contactList = new HashMap<String,String>(); 

    try{ 
     Uri uContactsUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; 

     String strProjection = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME; 

     phoneCursor = getContentResolver().query(uContactsUri, null, null, null, strProjection); 
     phoneCursor.moveToFirst(); 

     String name = ""; 
     String phoneNumber = ""; 

     int nameColumn = phoneCursor.getColumnIndex(Phone.DISPLAY_NAME); 
     int phoneColumn = phoneCursor.getColumnIndex(Phone.NUMBER); 



      phoneCursor.moveToNext(); 

     } 
    } 
    catch(Exception e){ 
     Log.e("[SmsMain] getContactData", e.toString()); 
    } 
    finally{ 
     if(phoneCursor != null){ 
      phoneCursor.close(); 
      phoneCursor = null; 
     } 
    } 
} 

回答

0

使用下面的方法来获取联系人姓名和号码是否存在亘古不变的,而不是名称返回相同的数字。

private String getContactNameFromNumber(String number) { 
     // define the columns I want the query to return 
     String[] projection = new String[] { 
       Contacts.Phones.DISPLAY_NAME, 
       Contacts.Phones.NUMBER }; 

     // encode the phone number and build the filter URI 
     Uri contactUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL, Uri.encode(number)); 

     // query time 
     Cursor c = getContentResolver().query(contactUri, projection, null, 
       null, null); 

     // if the query returns 1 or more results 
     // return the first result 
     if (c.moveToFirst()) { 
      String name = c.getString(c 
        .getColumnIndex(Contacts.Phones.DISPLAY_NAME)); 
      return name; 
     } 

     // return the original number if no match was found 
     return number; 
    } 
0

对于您需要使用优化PhoneLookup提供商所描述here

乌里URI = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,Uri.encode(phoneNumber的)); 游标cursor = resolver.query(uri,new String [] {PhoneLookup.DISPLAY_NAME},null,null,null);

请参阅本LINK了解更多详情

相关问题