我一直试图找到一个或所有正确的过滤器.有人有吗?在底部,您可以看到意图的日志输出.也许他们不公开?
<receiver android:name=".ContactsBroadcastReceiver" android:label="@string/broadcast_receiver_name" android:enabled="true"> <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" /> </intent-filter> <intent-filter> <action android:name="com.android.contacts.action.LIST_DEFAULT" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.TAB" /> </intent-filter> <intent-filter> <action android:name="com.android.contacts.action.LIST_CONTACTS" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.TAB" /> </intent-filter> <intent-filter> <action android:name="com.android.contacts.action.LIST_ALL_CONTACTS" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.TAB" /> </intent-filter> <intent-filter> <action android:name="com.android.contacts.action.LIST_CONTACTS_WITH_PHONES" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.TAB" /> </intent-filter> <intent-filter android:label="@string/starredList"> <action android:name="com.android.contacts.action.LIST_STARRED" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.TAB" /> </intent-filter> <intent-filter android:label="@string/frequentList"> <action android:name="com.android.contacts.action.LIST_FREQUENT" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.TAB" /> </intent-filter> <intent-filter android:label="@string/strequentList"> <action android:name="com.android.contacts.action.LIST_STREQUENT" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.TAB" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.INSERT_OR_EDIT" /> <category android:name="android.intent.category.DEFAULT" /> <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> <action android:name="android.intent.action.EDIT" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="content" android:host="com.android.contacts" android:pathPrefix="raw_contacts" android:mimeType="vnd.android.cursor.dir/contact"/> </intent-filter> <intent-filter> <action android:name="com.android.contacts.action.SHOW_OR_CREATE_CONTACT" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="content" android:host="com.android.contacts" android:path="contacts" android:mimeType="vnd.android.cursor.dir/contact"/> </intent-filter> <intent-filter> <action android:name="com.android.contacts.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="content" android:host="com.android.contacts" android:pathPrefix="contacts" android:mimeType="vnd.android.cursor.dir/contact"/> </intent-filter> <intent-filter> <action android:name="com.android.contacts.action.INSERT" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="content" android:host="com.android.contacts" android:path="contacts" android:mimeType="vnd.android.cursor.dir/contact"/> <!-- I/ActivityManager( 1212): Starting activity: Intent { act=android.intent.action.VIEW dat=content://com.android.contacts/contacts flg=0x10000000 cmp=com.android.contacts/.DialtactsContactsEntryActivity bnds=[324,598][480,718] } I/ActivityManager( 1212): Starting activity: Intent { act=android.intent.action.EDIT dat=content://com.android.contacts/raw_contacts/26 cmp=android/com.android.internal.app.ResolverActivity } I/ActivityManager( 1212): Starting activity: Intent { act=android.intent.action.INSERT dat=content://com.android.contacts/contacts cmp=com.android.contacts/.ui.EditContactActivity } --> </intent-filter> </receiver>
解决方法
这对我有用:
<intent-filter android:label="Edit Contact"> <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" /> </intent-filter> <intent-filter android:label="Create Contact"> <action android:name="android.intent.action.INSERT" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="vnd.android.cursor.dir/person" /> <data android:mimeType="vnd.android.cursor.dir/contact" /> <data android:mimeType="vnd.android.cursor.dir/raw_contact" /> </intent-filter> <intent-filter android:label="View Contact"> <action android:name="android.intent.action.VIEW" /> <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" /> </intent-filter>