如何打开联系人并让用户决定是否要创建或选择一个联系人

时间:2015-05-01 15:11:02

标签: android android-intent android-contacts

我尝试打开联系人并让用户决定是否要创建选择联系人以在我的应用上使用它。

我需要这样的东西: I need something like this

在第一个选项的位置,用户可以添加新联系人。

我尝试了以下代码:

Intent i = new Intent(Intent.ACTION_INSERT_OR_EDIT);
i.setType(ContactsContract.Contacts.CONTENT_TYPE);
i.putExtra("finishActivityOnSaveCompleted", true); // Fix for 4.0.3 +
startActivityForResult(i, CARREGA_CONTATOS);

但是在Logcat上(在startActivityForResult之后)出现了这个错误:

  

android.content.ActivityNotFoundException:找不到处理Intent的活动{act = android.intent.action.INSERT_OR_EDIT typ = vnd.android.cursor.dir / contact(has extras)}

我做错了什么?

修改

我也试过这个代码也有类似的结果:

Intent intent = new Intent(
    Intent.ACTION_INSERT_OR_EDIT,
    ContactsContract.Contacts.CONTENT_URI
);
startActivityForResult(intent, CARREGA_CONTATOS);
  

android.content.ActivityNotFoundException:找不到处理Intent的活动{act = android.intent.action.INSERT_OR_EDIT dat = content://com.android.contacts/contacts}

编辑2: 几乎我需要的是:

Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
i.putExtra("finishActivityOnSaveCompleted", true); // Fix for 4.0.3 +
startActivityForResult(i, CARREGA_CONTATOS);

但是此代码会打开此图片,用户必须选择"通讯录"在它到达我想要的地方之前。 But this code opens this image

2 个答案:

答案 0 :(得分:0)

documentation似乎建议使用:

// Creates a new Intent to insert a contact
Intent intent = new Intent(Intents.Insert.ACTION);
// Sets the MIME type to match the Contacts Provider
intent.setType(ContactsContract.RawContacts.CONTENT_TYPE);

答案 1 :(得分:0)

您是否尝试过此操作:https://stackoverflow.com/a/28465489

Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
startActivity(intent);