首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何仅从Android设备获取电话号码联系人

如何仅从Android设备获取电话号码联系人
EN

Stack Overflow用户
提问于 2015-11-15 22:32:47
回答 3查看 4.1K关注 0票数 2

我按照这个示例retrieve list of contacts从安卓设备检索联系人。它提供了所有的联系人,其中包括电子邮件联系人和一些空联系人。

我试着在投影和选择中像ContactsContract.Contacts.HAS_PHONE_NUMBER一样修改ContactsContract,以获得移动联系人,但都没有效果。

代码语言:javascript
复制
String[] PROJECTION = {ContactsContract.Contacts._ID,ContactsContract.Contacts.LOOKUP_KEY,
ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts._ID,
SORT_ORDER,ContactsContract.Contacts.HAS_PHONE_NUMBER};


字符串选择= ContactsContract.Contacts.DISPLAY_NAME +
“<>‘”+“和"ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1";

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

EN

回答 3

Stack Overflow用户

发布于 2018-08-19 03:15:30

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

欢迎提出建议。

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

票数 3
EN

Stack Overflow用户

发布于 2015-11-15 23:31:57

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

代码语言:javascript
复制
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();
票数 1
EN

Stack Overflow用户

发布于 2018-01-04 00:41:55

仅显示具有电话号码的联系人,并打开联系人列表意图:

代码语言:javascript
复制
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);

从response/contact获取电话号码:

代码语言:javascript
复制
@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();
        }
    }
}

确保您还可以在23+接口中处理运行时权限

代码语言:javascript
复制
android.permission.READ_CONTACTS
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33720856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档