【问题标题】:How to open contacts and let user decide if he/she want to create or select one contact如何打开联系人并让用户决定是否要创建或选择一个联系人
【发布时间】:2015-05-01 15:11:01
【问题描述】:

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

我需要这样的东西:

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

我尝试了以下代码:

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 的 Activity { 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 的 Activity { 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);

但是这段代码会打开这张图片,用户必须选择“联系人”才能到达我想要的位置。

【问题讨论】:

  • 您是否在清单中声明了您的活动?

标签: android android-intent android-contacts


【解决方案1】:

你试过了吗:https://stackoverflow.com/a/12722921/4029129

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

【讨论】:

    【解决方案2】:

    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);
    

    【讨论】:

    • 该代码直接转到“新联系人”。我需要一个选项让用户从现有联系人中进行选择或创建一个新联系人。
    • 你试过了吗?医生说它会为您处理。
    • 是的,我试过这个...这个documentation 只是编辑一个现有的联系人。我想选择一个或创建一个新的。在我的应用程序上,我只需要该联系人的姓名...
    • 那我想你必须自己做。在他们进行选择的地方显示一个弹出窗口,并基于该触发一个意图(检索列表并选择)或另一个(创建新的)。
    • 我避免使用这种方法,因为用户可能不知道联系人是否已经注册
    【解决方案3】:

    通常你必须添加默认类别intent.addCategory(Intent.CATEGORY_DEFAULT) 使其匹配一个动作。

    【讨论】:

    • 我试过这段代码Intent intent = new Intent( Intent.ACTION_INSERT_OR_EDIT, ContactsContract.Contacts.CONTENT_URI ); intent.putExtra("finishActivityOnSaveCompleted", true); // Fix for 4.0.3 + intent.addCategory(Intent.CATEGORY_DEFAULT); startActivityForResult(intent, CARREGA_CONTATOS);,但不起作用
    猜你喜欢
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多