仅在某些设备中获取所有联系人详细信息Android

时间:2019-03-03 11:39:36

标签: java android android-contacts

我正在尝试从联系人访问所有姓名电话号码。 我尝试了不同的方法,但仅获得名称,而无法在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设备的Contacts App中进行了检查,并从SKYPE中添加了联系人。因此,没有 Google ID Sim Card 中的联系人。 / p>

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

Main.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();
    }
}

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

谢谢..

0 个答案:

没有答案