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
diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
index 7a23944..0a295c4 100644
--- a/src/com/android/dialer/CallDetailActivity.java
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -66,6 +66,7 @@
 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 @@
         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 @@
                 new AsyncTask<Void, Void, Void>() {
                     @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;
                     }