summaryrefslogtreecommitdiffstats
path: root/telephony
diff options
context:
space:
mode:
authorHung-ying Tyan <tyanh@google.com>2010-10-21 10:56:11 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-10-21 10:56:11 -0700
commitfbd21b5875285725c434fc7d0145e919d0133946 (patch)
treeb31a7d615f3cb63436d6b341d3aef7531da68eda /telephony
parent821f087989a75ce9e04dc8dcc99b227fde0a0e28 (diff)
parentd691b36cdea314585b6aa17556ed4c35bb65a69e (diff)
downloadframeworks_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.java26
-rw-r--r--telephony/java/com/android/internal/telephony/CallerInfoAsyncQuery.java8
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(