diff options
author | Hung-ying Tyan <tyanh@google.com> | 2010-10-21 10:56:11 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-10-21 10:56:11 -0700 |
commit | fbd21b5875285725c434fc7d0145e919d0133946 (patch) | |
tree | b31a7d615f3cb63436d6b341d3aef7531da68eda /telephony | |
parent | 821f087989a75ce9e04dc8dcc99b227fde0a0e28 (diff) | |
parent | d691b36cdea314585b6aa17556ed4c35bb65a69e (diff) | |
download | frameworks_base-fbd21b5875285725c434fc7d0145e919d0133946.zip frameworks_base-fbd21b5875285725c434fc7d0145e919d0133946.tar.gz frameworks_base-fbd21b5875285725c434fc7d0145e919d0133946.tar.bz2 |
am d691b36c: am 6fe795ec: Do another contact lookup if the first one fails and...
Merge commit 'd691b36cdea314585b6aa17556ed4c35bb65a69e'
* commit 'd691b36cdea314585b6aa17556ed4c35bb65a69e':
Do another contact lookup if the first one fails and...
Diffstat (limited to 'telephony')
-rw-r--r-- | telephony/java/com/android/internal/telephony/CallerInfo.java | 26 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/CallerInfoAsyncQuery.java | 8 |
2 files changed, 34 insertions, 0 deletions
diff --git a/telephony/java/com/android/internal/telephony/CallerInfo.java b/telephony/java/com/android/internal/telephony/CallerInfo.java index db16dec..82fcb6a 100644 --- a/telephony/java/com/android/internal/telephony/CallerInfo.java +++ b/telephony/java/com/android/internal/telephony/CallerInfo.java @@ -267,6 +267,7 @@ public class CallerInfo { Uri contactUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number)); CallerInfo info = getCallerInfo(context, contactUri); + info = doSecondaryLookupIfNecessary(context, number, info); // if no query results were returned with a viable number, // fill in the original number value we used to query with. @@ -278,6 +279,30 @@ public class CallerInfo { } /** + * 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 * number. * @@ -409,6 +434,7 @@ public class CallerInfo { .append("\nisCachedPhotoCurrent: " + isCachedPhotoCurrent) .append("\nemergency: " + mIsEmergency) .append("\nvoicemail " + mIsVoiceMail) + .append("\ncontactExists " + contactExists) .toString(); } } diff --git a/telephony/java/com/android/internal/telephony/CallerInfoAsyncQuery.java b/telephony/java/com/android/internal/telephony/CallerInfoAsyncQuery.java index ce6875f..392b954 100644 --- a/telephony/java/com/android/internal/telephony/CallerInfoAsyncQuery.java +++ b/telephony/java/com/android/internal/telephony/CallerInfoAsyncQuery.java @@ -231,6 +231,14 @@ public class CallerInfoAsyncQuery { mCallerInfo = CallerInfo.getCallerInfo(mQueryContext, mQueryUri, cursor); 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. if (!TextUtils.isEmpty(cw.number)) { CountryDetector detector = (CountryDetector) mQueryContext.getSystemService( |