gpt4 book ai didi

java - Android - 通过带国家代码的号码联系

转载 作者:搜寻专家 更新时间:2023-10-30 21:22:16 26 4
gpt4 key购买 nike

当从传入的短信中检索手机号码时,它会附加国家代码。
现在,由于数据库中的匹配联系人可能不包含用于获取我正在使用的联系人姓名的国家/地区代码:

public static String getContactName(String number, Context context) {

try {

Uri personUri = Uri.withAppendedPath(
ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number.trim()));
String selection = PhoneLookup.NUMBER + " LIKE %" + number.trim() + "%";
Cursor cur = context.getContentResolver().query(personUri,
new String[] {
PhoneLookup.DISPLAY_NAME
},
selection, null, null);
if (cur.moveToFirst()) {
String str = cur.getString(cur.getColumnIndex(PhoneLookup.DISPLAY_NAME));
cur.close();
return str;
}
} catch (Exception e) {
//e.printStackTrace();
return number;
}
return number;
}

如果我传入完全匹配或部分匹配,这将非常有效。但是,如果我想获取联系人 ID,我将使用此代码:

public static Contact getContact(String number, ContentResolver contentResolver) {

Contact contact = new Contact(-1, number);
try {
Uri personUri = Uri.withAppendedPath(ContactsContract.CommonDataKinds.Phone.CONTENT_FILTER_URI, Uri.encode(number));
String selection = ContactsContract.CommonDataKinds.Phone.NUMBER + " LIKE '%" + number + "%'";
Cursor cur = contentResolver.query(personUri,
new String[] {
ContactsContract.CommonDataKinds.Phone.CONTACT_ID, PhoneLookup.DISPLAY_NAME
},
selection, null, null);
if (cur.moveToFirst()) {
contact = new Contact(Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID))),
cur.getString(cur.getColumnIndex(PhoneLookup.DISPLAY_NAME)));
}
cur.close();
} catch (Exception e) {}
return contact;
}

如果数字完全匹配,则此方法完美无缺,但如果不是,则不返回任何内容。我需要这种方法来找到联系人的 ID,其号码保存为“01111111111”,来电号码为“+441111111111”。尽管他们正在查看不同的 URI,但选择代码几乎相同,所以我不确定为什么它对第二个不起作用。

有什么想法吗?

最佳答案

我将此代码用于相同的要求,它返回一个名称通过从同一代码返回 contactId。使用它,您的问题将得到解决。

public static String getContactDisplayNameByNumber(String number) {
Uri uri = Uri.withAppendedPath(
ContactsContract.PhoneLookup.CONTENT_FILTER_URI,
Uri.encode(number));
String name = "?";

ContentResolver contentResolver = context.getContentResolver();
Cursor contactLookup = contentResolver.query(uri, new String[] {
BaseColumns._ID, ContactsContract.PhoneLookup.DISPLAY_NAME },
null, null, null);

try {
if (contactLookup != null && contactLookup.getCount() > 0) {
contactLookup.moveToNext();
name = contactLookup.getString(contactLookup
.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
// String contactId =
// contactLookup.getString(contactLookup.getColumnIndex(BaseColumns._ID));
}
} finally {
if (contactLookup != null) {
contactLookup.close();
}
}

return name;
}

关于java - Android - 通过带国家代码的号码联系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16190727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com