Checking for READ_CONTACTS permission

+ When starting a call, we attempt to look up the ContactInfo. This
lookup needs to be guarded by a check to ensure we have permission to
read the contacts.

Bug=27078247

Change-Id: Id68de80d3acd721642b79ff81fda5d9decd67e7b
diff --git a/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java b/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java
index bf5e1a3..590afaf 100644
--- a/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java
+++ b/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java
@@ -18,13 +18,13 @@
 
 import com.google.common.primitives.Longs;
 
+import android.Manifest;
 import android.content.AsyncQueryHandler;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.database.Cursor;
 import android.database.SQLException;
 import android.net.Uri;
-import android.os.Build;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
@@ -35,6 +35,7 @@
 
 import com.android.contacts.common.ContactsUtils;
 import com.android.contacts.common.compat.DirectoryCompat;
+import com.android.contacts.common.util.PermissionsUtil;
 import com.android.contacts.common.util.TelephonyManagerUtils;
 import com.android.dialer.calllog.ContactInfoHelper;
 import com.android.dialer.service.CachedNumberLookupService;
@@ -339,6 +340,12 @@
         Log.d(LOG_TAG, "##### CallerInfoAsyncQuery startContactProviderQuery()... #####");
         Log.d(LOG_TAG, "- number: " + info.phoneNumber);
         Log.d(LOG_TAG, "- cookie: " + cookie);
+        if (!PermissionsUtil.hasPermission(context, Manifest.permission.READ_CONTACTS)) {
+            Log.w(LOG_TAG, "Dialer doesn't have permission to read contacts.");
+            listener.onQueryComplete(token, cookie, info);
+            return;
+        }
+
         OnQueryCompleteListener contactsProviderQueryCompleteListener =
                 new OnQueryCompleteListener() {
                     @Override