如何在android中仅使用姓名和电话号码检索联系人列表
我正在使用以下代码如何在android中仅使用姓名和电话号码检索联系人列表,android,list,cursor,contacts,Android,List,Cursor,Contacts,我正在使用以下代码 public static void getaAllContacts() { sContentResolver = sContext.getContentResolver(); Cursor cursor = sContentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); while (cursor.moveToNext()) {
public static void getaAllContacts() {
sContentResolver = sContext.getContentResolver();
Cursor cursor = sContentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext()) {
String sName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
new DBHelper(sContext).addToContacts(sName);
}
}
问题是我的手机只有4个联系人,但它显示的联系人比我手机中的多。我不知道从哪里来的。我只想让手机中联系人应用程序中联系人列表中的联系人像这样使用:
String[] PROJECTION = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.HAS_PHONE_NUMBER,
};
String SELECTION = ContactsContract.Contacts.HAS_PHONE_NUMBER + "='1'";
Cursor contacts = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, PROJECTION, SELECTION, null, null);
这将只返回那些有电话号码的联系人
要获取联系人电话号码:
String phoneNumber = contacts.getString(contacts.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Log.i("Number", phoneNumber);
那么,它一定也在向您显示一些电子邮件地址?是的,它也在向我显示一些电子邮件地址,这些电子邮件地址也在类范围内而不是在方法范围内,没有区别,同样的错误也存在,如果一个人有多个数字,我想存储所有的数字。NOPS不工作,我得到这个“原因:java.lang.IllegalStateException:无法从CursorWindow读取第0行,第1列。在从游标访问数据之前,请确保已正确初始化该游标。在使用thismake contacts类范围游标变量之前,请使用“Use”Cursor.moveToFirst()。这不是一个好的做法,但它是一个热修复。我不明白,我该怎么做?