当前位置: 首页 > 知识库问答 >
问题:

如何获取只有电话号码联系人从Android设备

宰父学
2023-03-14

我遵循这个示例检索联系人列表,从android设备检索联系人。它提供所有联系人,包括电子邮件联系人和一些空联系人。

我尝试修改Conrects合同,如Conrects合同。联系人。HAS_PHONE_NUMBER在投影和选择,以获得移动联系人,但没有工作。

String[] PROJECTION = {ContactsContract.Contacts._ID,ContactsContract.Contacts.LOOKUP_KEY,
ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts._ID,
SORT_ORDER,ContactsContract.Contacts.HAS_PHONE_NUMBER};


String SELECTION=Conrects合同。联系人。DISPLAY_NAME"

有没有办法只获得有手机号码的联系人?

共有3个答案

郗福
2023-03-14

仅显示带有电话号码和打开联系人列表的联系人意图:

Intent pickContactIntent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); // Uri.parse("content://contacts")
// Show only user contacts with phone numbers
pickContactIntent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); // Show only user contacts with phone numbers
startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);

从响应/联系获取电话号码:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == PICK_CONTACT_REQUEST) {
        if (resultCode == RESULT_OK) {
            Uri contactUri = data.getData();
            String[] projection = {ContactsContract.CommonDataKinds.Phone.NUMBER};

            Cursor cursor = getActivity().getContentResolver().query(contactUri, projection, null, null, null);
            if (cursor == null) {
                // show error msg
                return;
            }
            cursor.moveToFirst();

            int column = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
            if (column >= 0) {
                String phoneNo = cursor.getString(column);
                sendSmsMessage(phoneNo);
            } else {
                // show error msg
            }
            cursor.close();
        }
    }
}

请确保,您还可以在API 23中处理运行时权限

android.permission.READ_CONTACTS
单于淇
2023-03-14

您可以使用此代码获取所有联系人的姓名和号码

Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
while (phones.moveToNext())
{
  String contactName=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
  String contactNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

}
phones.close();
曾涵育
2023-03-14

我创建了这个库来解决您的所有查询。它将只保存至少有一个电子邮件或电话号码的联系人。此外,它还将删除相同联系人(由whatsapp等第三方应用程序创建)的电子邮件和电话号码中的重复项。

欢迎提出建议。

链接:https://github.com/raghavsatyadev/ContactFetcher/

 类似资料:
  • 我想从Android的联系簿中获得电话号码。我尝试了许多方法,但我无法获得电话号码。我有联系人姓名和状态,但当我尝试获取电话号码时,它不起作用。我的代码是。

  • 问题内容: 我正在尝试根据给定的联系人电话号码检索联系人姓名。我做了一个可以在所有API版本中使用的函数,因为我无法使其在1.6版中运行,而且我也看不到问题所在,也许有人可以发现它? 请注意,我已经为字符串替换了API常量,因此没有过时的警告问题。 问题答案: 使用反射而不是比较sdk版本。

  • 本文向大家介绍Android获取手机联系人电话号码并返回结果,包括了Android获取手机联系人电话号码并返回结果的使用技巧和注意事项,需要的朋友参考一下 之前做了一个小练习需要用到获取手机里联系人的电话号码,通过查阅相关的资料,自己尝试写了一个小例子,可以成功获取。 首先需要在AndroidManifest.xml中获取权限 xml布局文件 MainActivity.java 以上就是本文的全部

  • 我已经创建了一个联系人列表,但当我点击任何联系人时,我只能从列表视图中获得android屏幕上第一个项目的联系人号码。 我想得到该职位点击联系人的电话号码。我在网上到处搜索但没有得到任何解决方案,我在过去13天里一直在尝试解决这个问题,但仍然无法解决这个问题,如果有人可以解决这个问题,请回答。谢谢你的帮助兄弟/姐妹!

  • 背景: 我为android写了一个简单的小拨号器,可以拨打联系人的电话号码 问题: 我想打电话给联系人,而不是电话号码,这样Android: 如果联系人有两个号码:将启动电话号码选择对话框,然后启动通话 当然,我可以从头开始实现一个弹出窗口,但我更愿意委托给一个标准操作,这样用户就可以使用与使用标准拨号器相同的用户体验。

  • 问题内容: 我正在尝试从通话记录中获取联系人。我可以使用以下代码从主要联​​系人获取联系电话: 它的作用是,当我们单击“联系人”按钮时,它将打开一个包含所有联系人的列表,用户可以选择任何联系人,并且所选联系人将添加到“收件人”字段中。我想做完全相同的事情,但是我不想显示所有联系人,而是只显示最近使用过的那些(呼叫记录)进行选择的联系人。 如果您还可以告诉如何与组一起执行此操作,那也很好。 问题答案