Don't wait for read access latch in provider.getType()

until really necessary.

Bug 6434853

Change-Id: I8f1d898f866b3b8016d720b80f8ffb8caac5048b
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java
index a328bb2..5d96b97 100644
--- a/src/com/android/providers/contacts/ContactsProvider2.java
+++ b/src/com/android/providers/contacts/ContactsProvider2.java
@@ -7524,9 +7524,6 @@
 
     @Override
     public String getType(Uri uri) {
-
-        waitForAccess(mReadAccessLatch);
-
         final int match = sUriMatcher.match(uri);
         switch (match) {
             case CONTACTS:
@@ -7559,6 +7556,9 @@
             case PROFILE_DATA:
                 return Data.CONTENT_TYPE;
             case DATA_ID:
+                // We need db access for this.
+                waitForAccess(mReadAccessLatch);
+
                 long id = ContentUris.parseId(uri);
                 if (ContactsContract.isProfileId(id)) {
                     return mProfileHelper.getDataMimeType(id);
@@ -7606,6 +7606,7 @@
             case STREAM_ITEMS_PHOTOS:
                 throw new UnsupportedOperationException("Not supported for write-only URI " + uri);
             default:
+                waitForAccess(mReadAccessLatch);
                 return mLegacyApiSupport.getType(uri);
         }
     }