History log of /packages/services/Telephony/src/com/android/phone/VoicemailStatus.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
52b16c610a652d7a7cb2c6a4bf5fd715eff674c2 20-Aug-2016 Tyler Gunn <tgunn@google.com> Add exception handling and retry when configuring VVM.

In VoicemailStatus#apply there is a possibility for the call to
ContentResolver#insert(.., ...) to throw an IllegalArgumentException if
the content resolver can't be started. If this happened there was a
possibility of the entire Phone process dying.

Added exception handling to the apply method, and in the
OmtpVvmCarrierConfigHelper added code to retry configuration if it fails.

Bug: 29837276
Change-Id: I419e866e0b44b69932f4d0b9d2b46067ce2efcfe
/packages/services/Telephony/src/com/android/phone/VoicemailStatus.java
5d351b96ea07a6e963ce1ccd0cb6fbf034866078 29-Jul-2016 Ta-wei Yen <twyen@google.com> Fix NPE on phone boot and SIM removal

In some cases TelecomManager.getCallCapablePhoneAccounts() might return
a PhoneAccountHandle with a invalid subId on boot, which will cause
a NPE when trying to convert the subId back to a PhoneAccountHandle
in SimChangeReceiver.processSubId().

SimChangeReceiver also might be triggered with a invalid subId that
is not SubscriptionManager.INVALID_SUBSCRIPTION_ID.
SubscriptionManager.isValidSubscriptionId() should be used instead of
comparing with the constant.

In this CL the subId is validated on the above events.
PhoneAccountHandleConverter.fromSubId() will also handle invalid subId
gracefully and return null. The null return value is checked in all
usages.

Change-Id: Ie703b1a2a826a2951e8cc90fccc6badd76928bd3
Fixes: 30474294
/packages/services/Telephony/src/com/android/phone/VoicemailStatus.java
7eda1e410a0b01add66b81bad8cc4014890f3e0f 27-Jul-2016 Ta-wei Yen <twyen@google.com> Reset voicemail status to disabled for not supported phone accounts

In some cases a phone account might have already written to the status
table, but the feature is later removed through changes in
CarrierConfig. Previously the VVM client will just stop handling the
account and the status will be stuck in the table. Sometimes it would
leave a error that which will be shown to the user forever.

After this CL, if the phone account has no VVM support, the status
table entry will be reset to the disabled state, which will make the
UI ignore the account.

Bug: 30314643
Change-Id: I0b67decd62d021de90d7d0ff0f5209e7f3e624ee
/packages/services/Telephony/src/com/android/phone/VoicemailStatus.java
016df6b594d4a5aba8c1e325a646a0bcf5d6d263 22-Jul-2016 Ta-wei Yen <twyen@google.com> Postpone error until no more retries are available

Error messages generated from tasks that have retries are often short
lived and not actionable. These errors should wait until no more
retries are available before being shown.

Before this CL, All error codes are written directly to the database
when a event is triggered. After this CL, writing to the database
requires a VoicemailStatus.Editor() object to be passed in. Usually
the object will be the same direct-write object as before. But in
retrying tasks, the object passed in will have the writes deferred
until the result of the task is determined. The writes will only be
committed if the task is successful or no more retries are left.

Passing a error handling object deep down is not ideal. A better way
will be throwing a exception back up so the task can decide how to
handle it. Unfortunately, deeper codes cannot handle escaping
exceptions gracefully, and changing it involves too much risk at this
moment.

+ Subsequent activation does not show the activating message

Fixes: 30284894
Change-Id: I523e8aa2f89ff3af13016eccd2392cee302e79dc
/packages/services/Telephony/src/com/android/phone/VoicemailStatus.java
f5c5d934a418a6c28313f284eec4f98a6fbbdc5c 02-Jun-2016 Ta-wei Yen <twyen@google.com> Centralize VVM error Processing

To prepare for vendor specific error codes every error that is written to
the voicemail status table is centralized to the VoicemailProtocol,
which determines what error code will be actually written.

+ Use PhoneAccountHandleConverter to convert subId instead of PhoneUtils.
PhoneAccountHandleConverter still uses PhoneUtils under the hood but
it will be changed to using public API in the future.

Bug:28968317
Bug:28977379
Change-Id: I69232b276ec0d456fb9ca1fb08f25b2d51d89462
/packages/services/Telephony/src/com/android/phone/VoicemailStatus.java
8a6f86c702ed29f43a346ef1ea6c837478be19fa 25-May-2016 Ta-wei Yen <twyen@google.com> Support SOURCE_TYPE in VoicemailContract.Status

Visual voicemail protocol type is written to the SOURCE_TYPE field upon
activation. For example, "vvm_type_omtp". This string will help the
dialer interpret protocol-specific error codes.

Helper methods in VoicemailContract.Status is removed in ag/1074791.
This CL replaces VoicemailUtils with VoicemailStatus to support the
removed functionality. It is also changed to an editor to update
multiple values with a single query.

Bug:26944391
Change-Id: Id5fae6852e7f15f6d9ddcdbde6577e379f16a5f3
/packages/services/Telephony/src/com/android/phone/VoicemailStatus.java