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