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

Posted

技术标签:

【中文标题】当我单击 main.xml 中定义的按钮时如何打开联系人【英文标题】:how do i open contacts when i click a button defined in main.xml 【发布时间】:2012-04-14 21:28:21 【问题描述】:

我正在android 中开发一个gps 跟踪应用程序。我已经完成了显示地图 n 的内容。现在我想在顶部制作一个按钮,单击该按钮将显示联系人,然后当我选择联系人时,它应该向我显示他或她的位置。 请帮我解决一下这个。 谢谢。

【问题讨论】:

很确定这是同一个问题:***.com/questions/4992564/… 谢谢.. 但我在哪里定义该代码。 ***.com/questions/9766263/… 检查这会对你有帮助 【参考方案1】:

您可以通过使用以下代码在 Button 上设置 OnClickListener 来设置 Button 点击​​事件,并使用 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;
  

【讨论】:

如何选择多个联系人?【参考方案2】:

你应该使用startActivityForResult

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

更多信息请参见"get contact info from android contact picker"。

【讨论】:

+1 用于使用ContactsContract.Contacts.CONTENT_URI,因为Contacts.CONTENT_URI 已被弃用。【参考方案3】:

试试这个代码

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

使用ACTION_DEFAULT 而不是ACTION_PICK

祝你好运。

【讨论】:

以上是关于当我单击 main.xml 中定义的按钮时如何打开联系人的主要内容,如果未能解决你的问题,请参考以下文章

Android自定义下拉菜单/弹出菜单

从片段中的按钮单击打开导航抽屉(Kotlin)

当我单击“更多”按钮时如何将 div 高度属性更改为自动

我们如何在按钮单击时在 pyqt 中打开特定于选项卡的选项卡?

PyQt5,单击按钮后如何打开新窗口

如何在单击按钮时使用参数更新 DataTable?