entsprechende Cursor-Aufzeichnungen übereinstimmen In onCreate Ich habe ein Cursor genannt Telefone:versucht, in mein Android App mein
// this query only return contacts with phone number and is not duplicated
phones = getContentResolver().query(
// the table to query
ContactsContract.Contacts.CONTENT_URI,
// the columns to return
null,
// selection criteria :
// we only want contacts that have a name and a phone number. If they have a phone number, the value is 1 (if not, it is 0)
ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '" + ("1") + "'" + " AND " + ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1",
// selection criteria
null,
// display in ascending order
ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
// phones.getCount returns 134 records, which is the correct number of contacts with corresponding phone number.
ich Schleife durch die Namen aller 134 Kontakte zu erhalten:
if (phones != null) {
if (phones.getCount() == 0) {
Toast.makeText(MainActivity.this, "No contacts in your contact list.", Toast.LENGTH_LONG).show();
}
while (phones.moveToNext()) {
String name = phones.getString(phones.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
Jetzt muss ich die 134 passenden Telefonnummern bekommen. Knapp unterhalb der letzten Zeile oben, noch in der While Loop
, mache ich einen neuen Cursor, phonestwo:
// phoneContactId returns 134 records, which is the correct number - it matches the number of contacts with corresponding phone numbers.
String phoneContactId = phones.getString(phones.getColumnIndexOrThrow(BaseColumns._ID));
phonestwo = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
new String[]{phoneContactId},
null);
while (phonestwo.moveToNext()) {
int phoneType = phonestwo.getInt(phonestwo.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.TYPE));
String phoneNumber = phonestwo.getString(phonestwo.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER));
//For every contact in the phonebook, show the name and number
SelectContact selectContact = new SelectContact();
selectContact.setName(name);
selectContact.setPhone(phoneNumber);
selectContacts.add(selectContact);
}
}
}
phones.close();
return null;
}
In meinem Logcat,
I 134 "Telefone" Aufzeichnungen haben, was richtig ist.
Ich habe 134 "phoneContactId" Datensätze, die korrekt ist.
Ich habe 1 und manchmal 2 "phonestwo" Datensätze. Aber ich möchte, dass die Anzahl der Phonestwo-Einträge 134 beträgt, die der entsprechenden 134 Telefonnummern. Irgendwelche Ideen?
Hier ist ein Ausschnitt aus meiner logcat:
04-09 01:22:42.384 8934-8948/com.example.chris.contactlistcustomlistview E/phones﹕ 134
04-09 01:22:42.384 8934-8948/com.example.chris.contactlistcustomlistview E/phonestwo﹕ 2
04-09 01:22:42.384 8934-8948/com.example.chris.contactlistcustomlistview E/Contact ID﹕ 1191
04-09 01:22:42.394 8934-8934/com.example.chris.contactlistcustomlistview D/OpenGLRenderer﹕ Enabling debug mode 0
04-09 01:22:42.404 8934-8948/com.example.chris.contactlistcustomlistview E/phones﹕ 134
04-09 01:22:42.404 8934-8948/com.example.chris.contactlistcustomlistview E/phonestwo﹕ 2
04-09 01:22:42.404 8934-8948/com.example.chris.contactlistcustomlistview E/Contact ID﹕ 2314
04-09 01:22:42.414 8934-8948/com.example.chris.contactlistcustomlistview E/phones﹕ 134
04-09 01:22:42.414 8934-8948/com.example.chris.contactlistcustomlistview E/phonestwo﹕ 1
04-09 01:22:42.414 8934-8948/com.example.chris.contactlistcustomlistview E/Contact ID﹕ 1076
04-09 01:22:42.424 8934-8948/com.example.chris.contactlistcustomlistview E/phones﹕ 134
04-09 01:22:42.424 8934-8948/com.example.chris.contactlistcustomlistview E/phonestwo﹕ 1
04-09 01:22:42.424 8934-8948/com.example.chris.contactlistcustomlistview E/Contact ID﹕ 643
04-09 01:22:42.454 8934-8948/com.example.chris.contactlistcustomlistview E/phones﹕ 134
04-09 01:22:42.454 8934-8948/com.example.chris.contactlistcustomlistview E/phonestwo﹕ 1
04-09 01:22:42.454 8934-8948/com.example.chris.contactlistcustomlistview E/Contact ID﹕ 746
04-09 01:22:42.474 8934-8948/com.example.chris.contactlistcustomlistview E/phones﹕ 134
04-09 01:22:42.474 8934-8948/com.example.chris.contactlistcustomlistview E/phonestwo﹕ 1
04-09 01:22:42.474 8934-8948/com.example.chris.contactlistcustomlistview E/Contact ID﹕ 1690
04-09 01:22:42.504 8934-8948/com.example.chris.contactlistcustomlistview E/phones﹕ 134
04-09 01:22:42.504 8934-8948/com.example.chris.contactlistcustomlistview E/phonestwo﹕ 1
04-09 01:22:42.504 8934-8948/com.example.chris.contactlistcustomlistview E/Contact ID﹕ 1055
04-09 01:22:42.524 8934-8948/com.example.chris.contactlistcustomlistview E/phones﹕ 134
04-09 01:22:42.524 8934-8948/com.example.chris.contactlistcustomlistview E/phonestwo﹕ 1
04-09 01:22:42.524 8934-8948/com.example.chris.contactlistcustomlistview E/Contact ID﹕ 945
04-09 01:22:42.554 8934-8948/com.example.chris.contactlistcustomlistview E/phones﹕ 134
04-09 01:22:42.554 8934-8948/com.example.chris.contactlistcustomlistview E/phonestwo﹕ 2
04-09 01:22:42.554 8934-8948/com.example.chris.contactlistcustomlistview E/Contact ID﹕ 226
04-09 01:22:42.564 8934-8948/com.example.chris.contactlistcustomlistview E/phones﹕ 134
04-09 01:22:42.564 8934-8948/com.example.chris.contactlistcustomlistview E/phonestwo﹕ 1
04-09 01:22:42.564 8934-8948/com.example.chris.contactlistcustomlistview E/Contact ID﹕ 267