2012-04-07 5 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 = Uri.withAppendedPath (PhoneLookup.CONTENT_FILTER_URI, Uri.encode (PHONENUMBER)); Курсор cursor = resolver.query (uri, new String [] {PhoneLookup.DISPLAY_NAME}, null, null, null);

см это LINK для больше деталей

Смежные вопросы