Implement granting of URI permissions from picker.

Now apps can have the user pick a contact and retrieve its data without
needing the READ_CONTACTS permission.

Also fix the intent filters for GET_CONTENT to work correctly (not require
a URI).

This is a manual cherry-pick of
https://android-git.corp.google.com/g/#change,64188

Bug: 3230253
Change-Id: I82ada3e1be000e02aa057a1ff2f64bb97e14bc26
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index fcffd21..27f1d66 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -187,11 +187,11 @@
             <intent-filter>
                 <action android:name="android.intent.action.VIEW" />
                 <category android:name="android.intent.category.DEFAULT" />
-                <data android:mimeType="vnd.android.cursor.dir/person" android:host="contacts" />
-                <data android:mimeType="vnd.android.cursor.dir/contact" android:host="com.android.contacts" />
-                <data android:mimeType="vnd.android.cursor.item/person" android:host="contacts" />
-                <data android:mimeType="vnd.android.cursor.item/contact" android:host="com.android.contacts" />
-                <data android:mimeType="vnd.android.cursor.item/raw_contact" android:host="com.android.contacts" />
+                <data android:mimeType="vnd.android.cursor.dir/person" />
+                <data android:mimeType="vnd.android.cursor.dir/contact" />
+                <data android:mimeType="vnd.android.cursor.item/person" />
+                <data android:mimeType="vnd.android.cursor.item/contact" />
+                <data android:mimeType="vnd.android.cursor.item/raw_contact" />
             </intent-filter>
         </activity>
 
@@ -251,7 +251,7 @@
             <intent-filter>
                 <action android:name="com.android.contacts.action.FILTER_CONTACTS" />
                 <category android:name="android.intent.category.DEFAULT" />
-                <data android:mimeType="vnd.android.cursor.dir/contact" android:host="com.android.contacts" />
+                <data android:mimeType="vnd.android.cursor.dir/contact" />
             </intent-filter>
 
             <meta-data android:name="android.app.searchable"
@@ -275,23 +275,23 @@
             <intent-filter>
                 <action android:name="android.intent.action.PICK" />
                 <category android:name="android.intent.category.DEFAULT" />
-                <data android:mimeType="vnd.android.cursor.dir/contact" android:host="com.android.contacts" />
-                <data android:mimeType="vnd.android.cursor.dir/person" android:host="contacts" />
-                <data android:mimeType="vnd.android.cursor.dir/phone_v2" android:host="com.android.contacts" />
-                <data android:mimeType="vnd.android.cursor.dir/phone" android:host="contacts" />
-                <data android:mimeType="vnd.android.cursor.dir/postal-address_v2" android:host="com.android.contacts" />
-                <data android:mimeType="vnd.android.cursor.dir/postal-address" android:host="contacts" />
+                <data android:mimeType="vnd.android.cursor.dir/contact" />
+                <data android:mimeType="vnd.android.cursor.dir/person" />
+                <data android:mimeType="vnd.android.cursor.dir/phone_v2" />
+                <data android:mimeType="vnd.android.cursor.dir/phone" />
+                <data android:mimeType="vnd.android.cursor.dir/postal-address_v2" />
+                <data android:mimeType="vnd.android.cursor.dir/postal-address" />
             </intent-filter>
 
             <intent-filter>
                 <action android:name="android.intent.action.GET_CONTENT" />
                 <category android:name="android.intent.category.DEFAULT" />
-                <data android:mimeType="vnd.android.cursor.item/contact" android:host="com.android.contacts" />
-                <data android:mimeType="vnd.android.cursor.item/person" android:host="contacts" />
-                <data android:mimeType="vnd.android.cursor.item/phone_v2" android:host="com.android.contacts" />
-                <data android:mimeType="vnd.android.cursor.item/phone" android:host="contacts" />
-                <data android:mimeType="vnd.android.cursor.item/postal-address_v2" android:host="com.android.contacts" />
-                <data android:mimeType="vnd.android.cursor.item/postal-address" android:host="contacts" />
+                <data android:mimeType="vnd.android.cursor.item/contact" />
+                <data android:mimeType="vnd.android.cursor.item/person" />
+                <data android:mimeType="vnd.android.cursor.item/phone_v2" />
+                <data android:mimeType="vnd.android.cursor.item/phone" />
+                <data android:mimeType="vnd.android.cursor.item/postal-address_v2" />
+                <data android:mimeType="vnd.android.cursor.item/postal-address" />
             </intent-filter>
         </activity>
 
@@ -349,8 +349,8 @@
             <intent-filter>
                 <action android:name="com.android.contacts.action.QUICK_CONTACT" />
                 <category android:name="android.intent.category.DEFAULT" />
-                <data android:mimeType="vnd.android.cursor.item/contact" android:host="com.android.contacts" />
-                <data android:mimeType="vnd.android.cursor.item/person" android:host="contacts" />
+                <data android:mimeType="vnd.android.cursor.item/contact" />
+                <data android:mimeType="vnd.android.cursor.item/person" />
             </intent-filter>
         </activity>
 
@@ -444,9 +444,9 @@
             <intent-filter android:label="@string/editContactDescription">
                 <action android:name="android.intent.action.EDIT" />
                 <category android:name="android.intent.category.DEFAULT" />
-                <data android:mimeType="vnd.android.cursor.item/person" android:host="contacts" />
-                <data android:mimeType="vnd.android.cursor.item/contact" android:host="com.android.contacts" />
-                <data android:mimeType="vnd.android.cursor.item/raw_contact" android:host="com.android.contacts" />
+                <data android:mimeType="vnd.android.cursor.item/person" />
+                <data android:mimeType="vnd.android.cursor.item/contact" />
+                <data android:mimeType="vnd.android.cursor.item/raw_contact" />
             </intent-filter>
             <intent-filter android:label="@string/insertContactDescription">
                 <action android:name="android.intent.action.INSERT" />