Android意图过滤器问题

Android意图过滤器问题,android,android-intent,resolution,android-contacts,intentfilter,Android,Android Intent,Resolution,Android Contacts,Intentfilter,我正试图编写一个意向过滤器,从联系人列表中选择一个联系人(纯粹出于教育目的……我正在学习意向)。在隐式意图上调用startActivity之后,android应该找到我的自定义活动以及作为候选活动的默认活动,并让我选择要使用的活动(意图解析) 然而,在我当前的设置中,它打开了android的默认联系人选择器,而没有给我选择的余地。这是我的意图过滤器 <activity android:name=".ContactPicker" android:label="PICKER" >

我正试图编写一个意向过滤器,从联系人列表中选择一个联系人(纯粹出于教育目的……我正在学习意向)。在隐式意图上调用startActivity之后,android应该找到我的自定义活动以及作为候选活动的默认活动,并让我选择要使用的活动(意图解析)

然而,在我当前的设置中,它打开了android的默认联系人选择器,而没有给我选择的余地。这是我的意图过滤器

<activity android:name=".ContactPicker" android:label="PICKER" >
    <intent-filter>
        <action android:name="android.intent.action.PICK" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="content" android:host="com.android.contacts" android:path="contacts" />
    </intent-filter>
</activity>
尝试:



您需要使用此处记录的ACTION\u CHOOSER-很抱歉,我自己不知道如何使用它,但请尝试用谷歌搜索示例。@Mistersquaonk:如果用户为此
目的选择了默认处理程序,这是必要的。可以想象,内置联系人应用程序被预先确定为默认设置,但我会感到惊讶,因为他们没有为我尝试覆盖的任何其他
意图
(例如,备用主屏幕)这样做。谢谢,这起到了作用。知道为什么在这种情况下按Uri过滤意图不起作用,而按mime类型过滤起作用吗?@AlephNull:Content provider Uri用于查找mime类型。引用
IntentFilter
docs,“如果您指定了一个方案,但没有指定类型,那么只有没有类型(如mailto:)的Intent才会匹配;content:URI永远不会匹配,因为它们总是有一个由其内容提供商提供的MIME类型。”通常,与内容提供商筛选器关联的活动都是MIME类型。此外,在这种情况下,做谷歌做的事对你总是最好的。通过查看联系人应用程序的源代码,我获得了上述
。太棒了,感谢您的帮助。最后一个问题,在哪里可以找到联系人应用程序的源代码?@AlephNull:--单击源选项卡,然后单击浏览源链接,查找contacts.git repo,然后单击该行中的树链接。
Intent intent = new Intent(Intent.ACTION_PICK, Uri.parse("content://com.android.contacts/contacts"));
startActivityForResult(intent, PICK_CONTACT);
<intent-filter>
    <action android:name="android.intent.action.PICK"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:mimeType="vnd.android.cursor.dir/contact"/>
</intent-filter>