我们可以使用联系人选择器添加联系人意图吗?

Posted

技术标签:

【中文标题】我们可以使用联系人选择器添加联系人意图吗?【英文标题】:Can We get add contact intent with contact picker? 【发布时间】:2016-10-24 09:35:18 【问题描述】:

我想使用联系人选择器意图来选择联系人。我还想要在我的活动中添加联系人的功能。有一个添加联系人的意图,我想知道我们可以像在 android 的联系人应用程序中那样使用这两者吗?

像这样:

我们可以使用联系人选择器以及添加联系人意图吗?谢谢。。

【问题讨论】:

【参考方案1】:

没有。

ACTION_PICK 将允许您选择联系人。但是,您无法请求联系人选择器 UI 提供添加联系人选项。此外,联系人选择器 UI 甚至不需要添加联系人选项。

如果您想允许用户添加联系人,请让您自己的 UI 触发 ACTION_INSERTACTION_INSERT_OR_EDIT 活动:

/***
  Copyright (c) 2008-2012 CommonsWare, LLC
  Licensed under the Apache License, Version 2.0 (the "License"); you may not
  use this file except in compliance with the License. You may obtain a copy
  of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required
  by applicable law or agreed to in writing, software distributed under the
  License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
  OF ANY KIND, either express or implied. See the License for the specific
  language governing permissions and limitations under the License.

  From _The Busy Coder's Guide to Android Development_
    https://commonsware.com/Android
*/

package com.commonsware.android.inserter;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Intents.Insert;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class ContactsInserter extends Activity 
  @Override
  public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button btn=(Button)findViewById(R.id.insert);

    btn.setOnClickListener(onInsert);
  

  View.OnClickListener onInsert=new View.OnClickListener() 
    public void onClick(View v) 
      EditText fld=(EditText)findViewById(R.id.name);
      String name=fld.getText().toString();

      fld=(EditText)findViewById(R.id.phone);

      String phone=fld.getText().toString();
      Intent i=new Intent(Intent.ACTION_INSERT_OR_EDIT);

      i.setType(Contacts.CONTENT_ITEM_TYPE);
      i.putExtra(Insert.NAME, name);
      i.putExtra(Insert.PHONE, phone);
      startActivity(i);
    
  ;

(来自this old sample project)

【讨论】:

以上是关于我们可以使用联系人选择器添加联系人意图吗?的主要内容,如果未能解决你的问题,请参考以下文章

从联系人选择器意图中获取人员的联系方式

从联系人选择器意图中选择电子邮件、姓名和电话号码

Android:联系人选择器意图 |无法实例化类型 Uri

Android 多联系人选择器(可选择选择哪个电话号码)

不使用联系人选择器的 iPhone 上的联系人列表

Espresso 和 Android 联系人选择器