The problem was that when we did a contact lookup based on a SIP address,
the resulting CallerInfo object did not have the person_id field set
correctly. That meant we had no way to look up the photo for that person.
This was because of a missing case in the logic to determine which column
(in the resulting cursor) to use for the person_id lookup. We were
handling lookups fine in the PhoneLookup and Phone tables, but were
missing a case for direct lookups in the Data table (which is how we look
up SIP addresses.)
The fix is to add a case for URIs like
"content://com.android.contacts/data" when looking up the person_id.
Also, since the person_id lookup is pretty hairy (and includes ~20 lines
of comments to explain what it's doing!) refactor it out into a helper
method.
TESTED: Both SIP and PSTN calls; verified that contact name *and* photo
are displayed correctly in all cases.
Bug: 3121292
Change-Id: I2b0083cc5394c1a49bbdc9a4e5651854aedb82f7
Merge commit 'd691b36cdea314585b6aa17556ed4c35bb65a69e'
* commit 'd691b36cdea314585b6aa17556ed4c35bb65a69e':
Do another contact lookup if the first one fails and...
it's a SIP call and the peer's username is all numeric. The all-numeric username
could be a PSTN number.
Bug: 3105116 (case #2)
Change-Id: I1de9cfac3aab1c4c89935176264d07693adb5e7d
Merge commit '2e99245e0e0d64ba6ab9227154c7fad132559c01'
* commit '2e99245e0e0d64ba6ab9227154c7fad132559c01':
Changed handling of onQueryCompelete to not use mimeType.
Using mimeType causes an IPC request to contacts which can
be slow. This can cause an ANR of the Phone app. This change
parses the URL and to decide which column to use for the person_id
and thus should not cause an ANR.
bug: 3060704
Change-Id: I750c72746c7269e162f0338c0a3e00230a600519
Typically the CallerInfo is looked up based on a phone number, in which case the '_id' column
contains the contact id.
However when the lookup is based on a phone row, the '_id' column is the row number we queried.
The contact id is stored somewhere else in a 'contact_id' column.
The current fix, checks the mime type of the contactRef URL to find out which column contains
the contact id.
I think the contact DB should be more consistent and always return the contact id AS contact_id even
in the phone number scenario.
Bug:2269240
Refactored common code between CallerInfo and CallerInfoAsyncQuery that deal
with voicemail number comparison.
In CallerInfo.java added a new field mIsVoiceMail to indicate this is a
voicemail call.
Added a new method to convert the CallerInfo into a VM instance.
Added a new method to generate a debug string from an instance.
PhoneNumberUtils has a new method "isVoiceMailNumber" to check if a number
is a VM one. I left the method as hidden. Previously any security exception
failure was cached in a static variable. I removed that and
privilege the optmistic scenario. I am not sure if the security exception
is only for the 'regular' telephony layer and if it applies if a 3rd party
VM app is installed (e.g googlevoice), hence i removed the cashing to make
sure we can pick up new voicemail providers when installed/enabled/disabled.
Bug:2112640
Fixed a bug in the sync call, the photo resource was not set to picture_emergency.
Added tests to check the correct emergency fields are set in the caller info instance.
Bug 2112640