Android:如何启动电子邮件联系人?

时间:2011-05-13 06:13:32

标签: android email contacts

此Intent打开联系人,其中包含仅包含地址信息的条目:

Intent getContactIntent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI);

现在我尝试使用此模式来过滤包含eMail的联系人:

Intent getContactIntent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Email.CONTENT_URI);

但是这个例外(没有action_pick意图左右)

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:3)

目前您无法使用默认的通讯录应用:默认的通讯录应用注册此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意图,但不能回复电子邮件地址ACTION_PICK意图。

如果您要进行电子邮件地址选择,则需要创建自己的活动,该活动从联系人提供商处获取Cursor,该活动仅显示具有电子邮件地址的用户,并在ListView中显示该用户可以选择。

答案 1 :(得分:0)

试试这个:

      public void readcontact(){
            try {
                Intent intent = new Intent(Intent.ACTION_PICK,  ContactsContract.Contacts.CONTENT_URI);
                intent.setType("vnd.android.cursor.dir/email");
                startActivityForResult(intent, PICK_CONTACT);
            } catch (Exception e) {
                    e.printStackTrace();
              }
        }