我正在尝试从联系人访问所有姓名和电话号码。 我尝试了不同的方法,但仅获得名称,而无法在Moto E3设备上获得电话号码。
在某些设备中,它可以正常工作..但是在我的Moto E3设备上不能正常工作,因为我认为我的代码无法正常工作。.我不知道为什么它在Moto E3设备上不显示电话号码。
我知道这是一个基本问题,或者可能是重复的,但是我以前看到的答案对我没有太大帮助。
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();
}
}
我想要联系人的所有姓名和电话号码。请帮助我。
谢谢..