как получить имя контакта, отправив контактный номер в Android? - PullRequest
1 голос
/ 17 февраля 2012

если есть какой-либо способ, чтобы получить имя контакта, отправив контактный номер в Android.Если у кого-нибудь есть идея.

private String getContactName(String string) {
         String name=null;
          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.HAS_PHONE_NUMBER));
                  name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
             }
               } 
        return name;
    }

Я отправляю контактный номер для этого метода. Как получить имя контакта.

Ответы [ 3 ]

1 голос
/ 17 февраля 2012

Я получил это сделать вот так.

public static String getContactName(final String phoneNumber,Context context) {
        Uri uri;
        String[] projection;
        Uri mBaseUri = Contacts.Phones.CONTENT_FILTER_URL;
        projection = new String[] { android.provider.Contacts.People.NAME };
        try {
            Class<?> c = Class
                    .forName("android.provider.ContactsContract$PhoneLookup");
            mBaseUri = (Uri) c.getField("CONTENT_FILTER_URI").get(mBaseUri);
            projection = new String[] { "display_name" };
        } catch (Exception e) {
        }
        uri = Uri.withAppendedPath(mBaseUri, Uri.encode(phoneNumber));
        Cursor cursor = context.getContentResolver().query(uri, projection, null,
                null, null);

        String contactName = "";

        if (cursor.moveToFirst()) {
            contactName = cursor.getString(0);
        }
        cursor.close();
        cursor = null;
        return contactName;
    }
1 голос
/ 17 февраля 2012

используйте следующий метод, чтобы связаться с поставщиком услуг связи:

Uri contactUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL, Uri.encode(string));

Cursor cursor = mContext.getContentResolver().query(contactUri, null, null, null, null);

У этого курсора будет набор результатов, имеющий номер, совпадающий с строкой.

0 голосов
/ 17 февраля 2012

Попробуйте

Uri uri;
String[] projection;
Uri baseUri = Contacts.Phones.CONTENT_FILTER_URL;
projection = new String[] { android.provider.Contacts.People.NAME };
try {
Class<?> c = Class.forName("android.provider.ContactsContract$PhoneLookup");
baseUri = (Uri) c.getField("CONTENT_FILTER_URI").get(baseUri);
projection = new String[] { "display_name" };
} catch (ClassNotFoundException e) {
    e.printStackTrace();
} catch (IllegalArgumentException e) {
    e.printStackTrace();
} catch (SecurityException e) {
    e.printStackTrace();
} catch (IllegalAccessException e) {
    e.printStackTrace();
} catch (NoSuchFieldException e) {
    e.printStackTrace();
}
uri = Uri.withAppendedPath(baseUri, Uri.encode(Uri
            .encode(phoneNumber)));
Cursor cursor =mContext.getContentResolver().query(uri,
            projection, null, null, null) ;

String fromDisplayName = null;
if (cursor != null) {
if (cursor.moveToFirst()){
    fromDisplayName = cursor.getString(0);
}
else{
    fromDisplayName="";
}
cursor.close();
} else {
    fromDisplayName="";
}
return fromDisplayName;

Uri android.provider.Contacts.People.NAME устарел.Но android.provider.ContactsContract $ PhoneLookup доступен только с уровня API 5.Следовательно, лучше использовать отражения для поддержки всех телефонов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...