此 Intent 打开联系人,其中仅包含带有地址信息的条目:
Intent getContactIntent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI);
现在我尝试使用此模式来过滤包含电子邮件的联系人:
Intent getContactIntent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Email.CONTENT_URI);
但这除外(没有出于 Intent 等的action_pick)
我怎样才能实现这一目标?
最佳答案
目前您不能使用默认的联系人应用程序:默认的联系人应用程序注册此 Intent 过滤器(请参阅 https://android.googlesource.com/platform/packages/apps/Contacts/+/master/AndroidManifest.xml#165 中的第 165 行):
<intent-filter>
<action android:name="android.intent.action.PICK" />
<category android:name="android.intent.category.DEFAULT" />
<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>
因此它能够响应邮政地址 ACTION_PICK
Intent ,但不能响应电子邮件地址 ACTION_PICK
Intent 。
如果您想要选择电子邮件地址,则需要创建自己的 Activity ,该 Activity 从联系人提供程序获取游标,该游标仅显示具有电子邮件地址的用户,并在 ListView 中显示该地址供用户选择。
关于Android:如何启动电子邮件联系人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5987929/