仅当他们有电话号码时,如何获取所有联系人的全名和电话号码?

Posted

技术标签:

【中文标题】仅当他们有电话号码时,如何获取所有联系人的全名和电话号码?【英文标题】:How to get all contacts full name and phone number, only if they have a phone number? 【发布时间】:2012-02-09 06:04:01 【问题描述】:

我正在尝试获取所有有电话号码的联系人,并记录他们的全名和电话号码(以及将来他们的联系人照片),但我被卡住了。这是我的代码:

String contacts = "";

    Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 
    while (cursor.moveToNext()) 
       String contactId = cursor.getString(cursor.getColumnIndex( 
       ContactsContract.Contacts._ID)); 
       String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
       if (hasPhone == "1") 
           contacts += cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)) + ":" + "how to get number?" + "|";
       
    
    cursor.close();

如果联系人有电话号码,则字符串 hasPhone 应包含“1”,然后将该姓名和人员电话号码添加到“联系人”字符串中。即使 hasPhone 确实包含“1”,(从 logcat 检查)条件语句中的代码也不会运行。还有,你是怎么得到电话号码的,ContactsContract.Contacts里没有号码。

【问题讨论】:

看一下可能对你有用检查***.com/questions/12026173/… 【参考方案1】:

试试这个:

if (Integer.parseInt(hasPhone) > 0)  
    Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +"="+ contactId, null, null); 
    phones.moveToNext(); //if you are interested in all contact phones do a while()
    String phoneNumber = phones.getString(phones.getColumnIndex( ContactsContract.CommonDataKinds.Phone.NUMBER));
    phones.close();
    contacts += cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)) + ":" + phoneNumber + "|";

【讨论】:

使用此代码后:pastebin.com/hrtFayqx 我在 Logcat 中仍然没有得到任何东西,没有错误,没有任何东西,遗憾的是。我不明白为什么。我也有 READ_CONTACTS 权限。我也确信这段代码正在处理中。【参考方案2】:

改为:

hasPhone.equals("1")

== 运算符检查对象是否相等,也就是说,如果 hasPhone 是与“1”相同的对象,这显然是错误的。

你想检查字典是否相等,所以你应该使用String的equals方法,它比较两个对象的字符串是否相等,意思是检查两者是否有相同的字符顺序。

此外,请考虑使用 LookupKey,如下所述:http://developer.android.com/resources/articles/contacts.html

如果您想保存特定联系人的未来参考。

【讨论】:

即便如此,我仍然没有得到任何东西。真的很奇怪。

以上是关于仅当他们有电话号码时,如何获取所有联系人的全名和电话号码?的主要内容,如果未能解决你的问题,请参考以下文章

获取带有全名详细信息和电话号码的 SINGLE 光标

在 Android 上通过电话号码获取联系人

检索所有电话联系人,无论他们的组

如何获取所有联系人的号码?我做错了啥?

从 Android 中的 URI 检索联系人电话号码

如何查询具有相同字段的两个表,仅当字段值相同时才返回id