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