IDを持つ特定の連絡先にカーソルを設定する必要があります
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
null,null, null, null);
すべてのデータベースのコードがありますが、どうすれば最適化できますか? 連絡先の名前とデフォルトの番号を返すカーソルが必要です
ありがとうございました
IDを持つ特定の連絡先にカーソルを設定する必要があります
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
null,null, null, null);
すべてのデータベースのコードがありますが、どうすれば最適化できますか? 連絡先の名前とデフォルトの番号を返すカーソルが必要です
ありがとうございました
cursor = getContentResolver().query(Phone.CONTENT_URI,
null, Phone.CONTACT_ID + "=?", new String[] { id },
Phone.DISPLAY_NAME + " ASC");
実際には 2 つのカーソルが必要です。1 つは名前と ID 用、もう 1 つは電話番号用です。
Cursor c = managedQuery(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if (c.moveToFirst()) {
name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
fullName = c.getString(c.getColumnIndex("display_name_alt"));
id = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
if (Integer.parseInt(c.getString(c.getColumnIndex
(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
//phone number
Cursor phones = getContentResolver().query(Phone.CONTENT_URI,
null,
Phone.CONTACT_ID + " = " + id,
null,
null);
while (phones.moveToNext()) {
String number_type = phones.getString(phones.getColumnIndex
(ContactsContract.CommonDataKinds.Phone.TYPE));
if(number_type.equalsIgnoreCase("1"))
number1 = phones.getString(phones.getColumnIndex
(ContactsContract.CommonDataKinds.Phone.NUMBER));
if(number_type.equalsIgnoreCase("2"))
number2 = phones.getString(phones.getColumnIndex
(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
phones.close();
}
}
c.close();