【问题标题】:Use a TextView to get a Contact from Address Book使用 TextView 从通讯簿中获取联系人
【发布时间】:2014-03-22 12:31:01
【问题描述】:

我是 Android Dev 的新手,在尝试获取 editText 以拉出一个联系人时遇到问题。我创建了 3 个editTexts,每个都将接收一个联系人,并将向选定的联系人发送一条短信。

http://imgur.com/IbAT1hX

我尝试了几件我在网上找到的东西,但它们都崩溃了,我真的不明白我在做什么。

我知道我必须创建一个onClickListener()

    contact.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
      // TODO Auto-generated method stub


      } 
    });

我的另一个问题是,由于我需要为每个 EditText 选择一个联系人,我是否必须为三个 EditTexts 复制相同的代码?

选择联系人后,我想只显示联系人的姓名。

任何帮助将不胜感激!

【问题讨论】:

  • 你究竟是什么意思试图让一个editText拉出一个联系人你想得到它的文本值还是你想得到editText的对象?
  • 我想点击一个editText并让它打开联系人,这样我就可以选择其中一个联系人,并获取我需要发送短信的电话号码,但我希望显示editText只是联系人的姓名。

标签: java android android-edittext contacts


【解决方案1】:

您可以像我在我的一个应用程序中所做的那样(我在按钮单击您并使用您的编辑文本时这样做) 打开联系人

button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                 Intent intent= new Intent(Intent.ACTION_PICK,  Contacts.CONTENT_URI);

        startActivityForResult(intent, PICK_CONTACT);

            }
        });

然后在用户选择后,您可以在 OnActivityResult 方法中获取结果并处理联系人 uri 以加载联系人的详细信息

@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
  super.onActivityResult(reqCode, resultCode, data);

  switch (reqCode) {
    case (PICK_CONTACT) :
      if (resultCode == Activity.RESULT_OK) {
        Uri contactData = data.getData();
        Cursor c =  managedQuery(contactData, null, null, null, null);
        if (c.moveToFirst()) {
          String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
          // TODO Fetch other Contact details as you want to use
              Set the name of contact in your editText

        }
      }
      break;
  }
}   

【讨论】:

  • 谢谢,我看看能不能实现。我试了一次,还是不行。
猜你喜欢
  • 2011-09-28
  • 2013-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多