首页 > 解决方案 > 仅在某些 Android 设备中获取所有联系人详细信息

问题描述

我正在尝试从联系人访问所有姓名电话号码。我尝试了不同的方法,但我只获得了姓名,无法在我的 Moto E3 设备上获得电话号码。

在某些设备中它工作正常.. 但在我的 Moto E3 设备上却没有,因为我认为我的代码不起作用.. 我不知道为什么它没有在 Moto E3 设备上显示电话号码..

我知道这是一个基本问题,或者可能是重复的,但我之前看到的答案对我没有多大帮助。

参考链接是: Link1 Link2

int hasPhoneNumber = Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)));

hasPhoneNumber变量总是给我零值(0)。

回答

然后我检查了 Moto E3 设备的联系人应用程序,联系人是从 SKYPE 添加的。所以那里没有来自Google IdSim Card的联系人。

因此,我无法在 My Moto E3 中获取联系人。所以,我在我的Google ID中添加了一些数字,然后同步联系人。然后我获取数据。我得到了所有添加的联系人..

主.java

private void getContactList() {
    ContentResolver cr = getContentResolver();
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

    if (cursor.getCount() > 0) {
        while (cur != null && cur.moveToNext()) {

            String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));

            String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

            int hasPhoneNumber = cur.getInt(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

            if (hasPhoneNumber > 0) //hasPhoneNumber is always give Zero value(0)
            {
                Cursor pCur = cr.query(
                        ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                        null,
                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
                        new String[]{id}, null);
                while (pCur.moveToNext()) {
                    String phoneNo = pCur.getString(pCur.getColumnIndex(
                            ContactsContract.CommonDataKinds.Phone.NUMBER));
                    Log.i("TAG", "Name: " + name);
                    Log.i("TAG", "Phone Number: " + phoneNo);
                }
                pCur.close();

            }
        }
    }
    if(cur!=null){
        cur.close();
    }
}

我想要联系人中的所有姓名和电话号码,请帮助我..

谢谢你..

注意:我已经检查了上面的代码在另一个设备上运行良好。但不是在我的 Moto E3 设备上,因为我认为我的代码不起作用。我不知道为什么它没有在 Moto E3 设备上显示电话号码。

标签: javaandroidandroid-contacts

解决方案


推荐阅读