我们希望自动将文本(TextView)中的电话号码替换为相应的联系人姓名。
是否有已经执行此操作的库或代码段?另外,我的天真方法是:
(来自@Skynet的查询建议)
目前正在feature request for TextSecure讨论,但也可能对其他Android应用程序有用。
答案 0 :(得分:1)
您无需获取所有联系人列表。您可以从电话号码获取联系人姓名。使用此方法:
public static String getContactName(Context context, String phoneNumber) {
ContentResolver contentResolver = context.getContentResolver();
Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
Cursor cursor = contentResolver.query(uri, new String[]{ PhoneLookup.DISPLAY_NAME }, null, null, null);
if (cursor == null) {
return null;
}
String contactName = null;
if(cursor.moveToFirst()) {
contactName = cursor.getString(cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME));
}
if(cursor != null && !cursor.isClosed()) {
cursor.close();
}
return contactName;
}
祝你好运。
答案 1 :(得分:0)
尝试使用此方法通过电话号码获取联系人姓名:
public String getContactName(String number) {
Uri uri = Uri.withAppendedPath(
ContactsContract.PhoneLookup.CONTENT_FILTER_URI,
Uri.encode(number));
Cursor cur = context.getContentResolver().query(
uri,
new String[] { ContactsContract.PhoneLookup.DISPLAY_NAME,
ContactsContract.PhoneLookup.NUMBER,
ContactsContract.PhoneLookup._ID }, null, null, null);
String contactName = "";
if (cur.moveToNext()) {
int name = cur
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
contactName = cur.getString(name);
}
cur.close();
return contactName;
}
将数字替换为TextView中的联系人姓名时使用此选项。我希望它有效。 :)强>