Skip to content Skip to sidebar Skip to footer

How To Get Contact Name By Sending Contact Number In Android?

if there any method to get contact name by send contact number in android.if any one have idea . private String getContactName(String string) { String name=null;

Solution 1:

use following method to get contact, from contact provider:

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

Cursorcursor= mContext.getContentResolver().query(contactUri, null, null, null, null);

This cursor will have resultset having number same as string.

Solution 2:

I got it by do like these.

publicstaticStringgetContactName(final String phoneNumber,Context context) {
        Uri uri;
        String[] projection;
        Uri mBaseUri = Contacts.Phones.CONTENT_FILTER_URL;
        projection = newString[] { android.provider.Contacts.People.NAME };
        try {
            Class<?> c = Class
                    .forName("android.provider.ContactsContract$PhoneLookup");
            mBaseUri = (Uri) c.getField("CONTENT_FILTER_URI").get(mBaseUri);
            projection = newString[] { "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;
    }

Solution 3:

Try

Uri uri;
String[] projection;
Uri baseUri = Contacts.Phones.CONTENT_FILTER_URL;
projection = newString[] { android.provider.Contacts.People.NAME };
try {
Class<?> c = Class.forName("android.provider.ContactsContract$PhoneLookup");
baseUri = (Uri) c.getField("CONTENT_FILTER_URI").get(baseUri);
projection = newString[] { "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;

The Uri android.provider.Contacts.People.NAME is deprecated. But android.provider.ContactsContract$PhoneLookup is available from API level 5 only. Hence it is better to use reflections to support all phones.

Post a Comment for "How To Get Contact Name By Sending Contact Number In Android?"