am 6fe795ec
: Do another contact lookup if the first one fails and...
Merge commit '6fe795ecd35c4d49822d349424fc71b660577dfc' into gingerbread-plus-aosp * commit '6fe795ecd35c4d49822d349424fc71b660577dfc': Do another contact lookup if the first one fails and...
This commit is contained in:
@ -260,6 +260,7 @@ public class CallerInfo {
|
|||||||
Uri contactUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
|
Uri contactUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
|
||||||
|
|
||||||
CallerInfo info = getCallerInfo(context, contactUri);
|
CallerInfo info = getCallerInfo(context, contactUri);
|
||||||
|
info = doSecondaryLookupIfNecessary(context, number, info);
|
||||||
|
|
||||||
// if no query results were returned with a viable number,
|
// if no query results were returned with a viable number,
|
||||||
// fill in the original number value we used to query with.
|
// fill in the original number value we used to query with.
|
||||||
@ -270,6 +271,30 @@ public class CallerInfo {
|
|||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs another lookup if previous lookup fails and it's a SIP call
|
||||||
|
* and the peer's username is all numeric. Look up the username as it
|
||||||
|
* could be a PSTN number in the contact database.
|
||||||
|
*
|
||||||
|
* @param context the query context
|
||||||
|
* @param number the original phone number, could be a SIP URI
|
||||||
|
* @param previousResult the result of previous lookup
|
||||||
|
* @return previousResult if it's not the case
|
||||||
|
*/
|
||||||
|
static CallerInfo doSecondaryLookupIfNecessary(Context context,
|
||||||
|
String number, CallerInfo previousResult) {
|
||||||
|
if (!previousResult.contactExists
|
||||||
|
&& PhoneNumberUtils.isUriNumber(number)) {
|
||||||
|
String username = number.substring(0, number.indexOf('@'));
|
||||||
|
if (PhoneNumberUtils.isGlobalPhoneNumber(username)) {
|
||||||
|
previousResult = getCallerInfo(context,
|
||||||
|
Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,
|
||||||
|
Uri.encode(username)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return previousResult;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* getCallerId: a convenience method to get the caller id for a given
|
* getCallerId: a convenience method to get the caller id for a given
|
||||||
* number.
|
* number.
|
||||||
@ -402,6 +427,7 @@ public class CallerInfo {
|
|||||||
.append("\nisCachedPhotoCurrent: " + isCachedPhotoCurrent)
|
.append("\nisCachedPhotoCurrent: " + isCachedPhotoCurrent)
|
||||||
.append("\nemergency: " + mIsEmergency)
|
.append("\nemergency: " + mIsEmergency)
|
||||||
.append("\nvoicemail " + mIsVoiceMail)
|
.append("\nvoicemail " + mIsVoiceMail)
|
||||||
|
.append("\ncontactExists " + contactExists)
|
||||||
.toString();
|
.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -230,6 +230,14 @@ public class CallerInfoAsyncQuery {
|
|||||||
mCallerInfo = CallerInfo.getCallerInfo(mQueryContext, mQueryUri, cursor);
|
mCallerInfo = CallerInfo.getCallerInfo(mQueryContext, mQueryUri, cursor);
|
||||||
if (DBG) Log.d(LOG_TAG, "==> Got mCallerInfo: " + mCallerInfo);
|
if (DBG) Log.d(LOG_TAG, "==> Got mCallerInfo: " + mCallerInfo);
|
||||||
|
|
||||||
|
CallerInfo newCallerInfo = CallerInfo.doSecondaryLookupIfNecessary(
|
||||||
|
mQueryContext, cw.number, mCallerInfo);
|
||||||
|
if (newCallerInfo != mCallerInfo) {
|
||||||
|
mCallerInfo = newCallerInfo;
|
||||||
|
if (DBG) log("#####async contact look up with numeric username"
|
||||||
|
+ mCallerInfo);
|
||||||
|
}
|
||||||
|
|
||||||
// Use the number entered by the user for display.
|
// Use the number entered by the user for display.
|
||||||
if (!TextUtils.isEmpty(cw.number)) {
|
if (!TextUtils.isEmpty(cw.number)) {
|
||||||
mCallerInfo.phoneNumber = PhoneNumberUtils.formatNumber(cw.number);
|
mCallerInfo.phoneNumber = PhoneNumberUtils.formatNumber(cw.number);
|
||||||
|
Reference in New Issue
Block a user