如何让 PhoneNumberUtil 识别数组?
How to get PhoneNumberUtil to recognize arrays?
我在 recyclerview 中有一个联系人列表,其中有 phone 个号码。我希望 PhoneNumberUtil (libphonenumber) 通过将传入号码与列表中的号码进行比较来告诉我这些联系人之一是否正在呼叫。目前,这仅适用于只有一个 phone 号码的联系人。我想要的是它也可以与具有多个号码的联系人一起使用。
这是我的部分代码:
String listNumbers = listItem.getNumbers().toString();
System.out.println(listNumbers);
PhoneNumberUtil pnu = PhoneNumberUtil.getInstance();
PhoneNumberUtil.MatchType mt = pnu.isNumberMatch(listNumbers, number);
if (mt == PhoneNumberUtil.MatchType.NSN_MATCH || mt == PhoneNumberUtil.MatchType.SHORT_NSN_MATCH || mt == PhoneNumberUtil.MatchType.EXACT_MATCH) {
if (selected) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
if (notificationManager != null) {
notificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_NONE);
}
}
}
这是我的系统输出的样子:
I/System.out: [029-426-9301, 029-426-9302, 029-426-9303]
I/System.out: [044-070-2586]
I/System.out: [225-649-86, 225-649-86]
I/System.out: [078-885-21174]
我尝试过的:
我尝试格式化字符串数组,以便用方括号替换逗号,如下所示:[029-426-9301] [029-426-9302] [029-426-9303]。但是,这没有什么区别,数字仍然无法识别。
我将不胜感激。
你可以这样做:
boolean isMatch = false;
String matchedNumber = null;
for (String currentNumber : listItem.getNumbers ()) {
PhoneNumberUtil.MatchType mt = pnu.isNumberMatch (currentNumber, number);
if (mt == PhoneNumberUtil.MatchType.NSN_MATCH || mt == PhoneNumberUtil.MatchType.SHORT_NSN_MATCH || mt == PhoneNumberUtil.MatchType.EXACT_MATCH) {
isMatch = true;
matchedNumber = currentNumber;
break;
}
}
if (isMatch) {
// your business logic
}
我在 recyclerview 中有一个联系人列表,其中有 phone 个号码。我希望 PhoneNumberUtil (libphonenumber) 通过将传入号码与列表中的号码进行比较来告诉我这些联系人之一是否正在呼叫。目前,这仅适用于只有一个 phone 号码的联系人。我想要的是它也可以与具有多个号码的联系人一起使用。
这是我的部分代码:
String listNumbers = listItem.getNumbers().toString();
System.out.println(listNumbers);
PhoneNumberUtil pnu = PhoneNumberUtil.getInstance();
PhoneNumberUtil.MatchType mt = pnu.isNumberMatch(listNumbers, number);
if (mt == PhoneNumberUtil.MatchType.NSN_MATCH || mt == PhoneNumberUtil.MatchType.SHORT_NSN_MATCH || mt == PhoneNumberUtil.MatchType.EXACT_MATCH) {
if (selected) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
if (notificationManager != null) {
notificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_NONE);
}
}
}
这是我的系统输出的样子:
I/System.out: [029-426-9301, 029-426-9302, 029-426-9303]
I/System.out: [044-070-2586]
I/System.out: [225-649-86, 225-649-86]
I/System.out: [078-885-21174]
我尝试过的:
我尝试格式化字符串数组,以便用方括号替换逗号,如下所示:[029-426-9301] [029-426-9302] [029-426-9303]。但是,这没有什么区别,数字仍然无法识别。
我将不胜感激。
你可以这样做:
boolean isMatch = false;
String matchedNumber = null;
for (String currentNumber : listItem.getNumbers ()) {
PhoneNumberUtil.MatchType mt = pnu.isNumberMatch (currentNumber, number);
if (mt == PhoneNumberUtil.MatchType.NSN_MATCH || mt == PhoneNumberUtil.MatchType.SHORT_NSN_MATCH || mt == PhoneNumberUtil.MatchType.EXACT_MATCH) {
isMatch = true;
matchedNumber = currentNumber;
break;
}
}
if (isMatch) {
// your business logic
}