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" />