From 4aece9536ed64da965fd42da07a393f935abd6b1 Mon Sep 17 00:00:00 2001 From: Yorke Lee Date: Sat, 2 May 2015 22:22:54 -0700 Subject: 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 --- src/com/android/dialer/CallDetailActivity.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/com/android/dialer/CallDetailActivity.java') diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java index 7a23944a0..0a295c4fe 100644 --- a/src/com/android/dialer/CallDetailActivity.java +++ b/src/com/android/dialer/CallDetailActivity.java @@ -66,6 +66,7 @@ import com.android.dialer.util.AsyncTaskExecutor; import com.android.dialer.util.AsyncTaskExecutors; import com.android.dialer.util.CallIntentUtil; import com.android.dialer.util.DialerUtils; +import com.android.dialer.util.TelecomUtil; import com.android.dialer.voicemail.VoicemailPlaybackFragment; import com.android.dialer.voicemail.VoicemailStatusHelper; import com.android.dialer.voicemail.VoicemailStatusHelper.StatusMessage; @@ -307,7 +308,8 @@ public class CallDetailActivity extends Activity implements ProximitySensorAware final int numIds = ids == null ? 0 : ids.length; final Uri[] uris = new Uri[numIds]; for (int index = 0; index < numIds; ++index) { - uris[index] = ContentUris.withAppendedId(Calls.CONTENT_URI_WITH_VOICEMAIL, ids[index]); + uris[index] = ContentUris.withAppendedId( + TelecomUtil.getCallLogUri(CallDetailActivity.this), ids[index]); } return uris; } @@ -670,7 +672,8 @@ public class CallDetailActivity extends Activity implements ProximitySensorAware new AsyncTask() { @Override public Void doInBackground(Void... params) { - getContentResolver().delete(Calls.CONTENT_URI_WITH_VOICEMAIL, + getContentResolver().delete( + TelecomUtil.getCallLogUri(CallDetailActivity.this), Calls._ID + " IN (" + callIds + ")", null); return null; } -- cgit v1.2.3