diff options
author | Yorke Lee <yorkelee@google.com> | 2015-05-02 22:22:54 -0700 |
---|---|---|
committer | Yorke Lee <yorkelee@google.com> | 2015-05-11 11:39:05 -0700 |
commit | 4aece9536ed64da965fd42da07a393f935abd6b1 (patch) | |
tree | f7b55745b75b1f2bcaa40fddd4c1701e72b92d18 /src/com/android/dialer/SpecialCharSequenceMgr.java | |
parent | 81c93829582aac6cd8717511216611f37cc9c4c5 (diff) | |
download | android_packages_apps_Dialer-4aece9536ed64da965fd42da07a393f935abd6b1.tar.gz android_packages_apps_Dialer-4aece9536ed64da965fd42da07a393f935abd6b1.tar.bz2 android_packages_apps_Dialer-4aece9536ed64da965fd42da07a393f935abd6b1.zip |
Dynamically check for permission denials
Don't crash when performing certain operations that the
dialer might not have permissions to execute:
* Access voicemail provider
* Certain TelecomManager methods
Add a class TelecomUtil that checks for permissions/default
dialer status, and handles the privileged operations
appropriately.
Bug: 20266292
Change-Id: Ibe8a85440b9ca20169b5ce3be24d1a385caaebb6
Diffstat (limited to 'src/com/android/dialer/SpecialCharSequenceMgr.java')
-rw-r--r-- | src/com/android/dialer/SpecialCharSequenceMgr.java | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/com/android/dialer/SpecialCharSequenceMgr.java b/src/com/android/dialer/SpecialCharSequenceMgr.java index 36145aaef..a57e2ee57 100644 --- a/src/com/android/dialer/SpecialCharSequenceMgr.java +++ b/src/com/android/dialer/SpecialCharSequenceMgr.java @@ -46,6 +46,7 @@ import com.android.contacts.common.database.NoNullCursorAsyncQueryHandler; import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment; import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment.SelectPhoneAccountListener; import com.android.dialer.calllog.PhoneAccountUtils; +import com.android.dialer.util.TelecomUtil; import java.util.Arrays; import java.util.ArrayList; @@ -272,7 +273,7 @@ public class SpecialCharSequenceMgr { sPreviousAdnQueryHandler = handler; } - static boolean handlePinEntry(Context context, final String input) { + static boolean handlePinEntry(final Context context, final String input) { if ((input.startsWith("**04") || input.startsWith("**05")) && input.endsWith("#")) { final TelecomManager telecomManager = (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE); @@ -284,13 +285,14 @@ public class SpecialCharSequenceMgr { if (subscriptionAccountHandles.size() == 1 || hasUserSelectedDefault) { // Don't bring up the dialog for single-SIM or if the default outgoing account is // a subscription account. - return telecomManager.handleMmi(input); + return TelecomUtil.handleMmi(context, input, null); } else if (subscriptionAccountHandles.size() > 1){ SelectPhoneAccountListener listener = new SelectPhoneAccountListener() { @Override public void onPhoneAccountSelected(PhoneAccountHandle selectedAccountHandle, boolean setDefault) { - telecomManager.handleMmi(input, selectedAccountHandle); + TelecomUtil.handleMmi(context.getApplicationContext(), + input, selectedAccountHandle); //TODO: show error dialog if result isn't valid } @Override |