当我单击main.xml中定义的按钮时,如何打开联系人

时间:2012-03-31 12:17:51

标签: android button contact buttonclick

我正在android中开发一个gps跟踪应用程序。我完成了显示地图的东西。现在我想在顶部做一个按钮,当点击它时会显示联系人,然后当我选择联系人时它应该显示他或她的位置。 请帮我解决一下这个。 谢谢。

3 个答案:

答案 0 :(得分:17)

您可以通过使用以下代码在按钮上设置OnClickListener来设置按钮上的事件,并使用Intent调用ContactPicker活动:

button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                 Intent intent= new Intent(Intent.ACTION_PICK,  ContactsContract.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

        }
      }
      break;
  }
}

答案 1 :(得分:11)

您应该使用startActivityForResult

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);  
startActivityForResult(intent, 1); 

有关详细信息,请参阅"get contact info from android contact picker"

答案 2 :(得分:1)

试试这段代码

Intent intent = new Intent(Intent.ACTION_DEFAULT, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, 1);

使用ACTION_DEFAULT代替ACTION_PICK

祝你好运。