いくつかの連絡先 ID をデータベースに保存し、それらを整数のリストで取得します。
次に、Android 連絡先データベースのカーソルを特定の ID に設定しようとします。私がそれを行うと、LogCatはコードがクラッシュしたことを通知します
id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
データベースの特定の要素を指すようにカーソルを設定し、連絡先データベース全体を解析することなく、名前とデフォルトの電話番号を取得しようとしました。
コードの何が問題になっていますか? ありがとうございました
ArrayList<Contact> contactItemsTemp = new ArrayList<Contact>();
DatabaseHandler db = new DatabaseHandler(BlacklistActivity.this);
String name = "";
String id = "";
String phoneNumber = "";
// Cursor cursor = null;
List<Integer> mycontactID;
mycontactID = db.getAllIDs();
Iterator value = mycontactID.iterator();
while (value.hasNext()) {
int mg = (Integer) value.next();
ContentResolver cr = getContentResolver();
// String[] PROJECTION=new String[] { ContactsContract.Contacts._ID,
// ContactsContract.Contacts.DISPLAY_NAME,
// ContactsContract.CommonDataKinds.Phone.NUMBER
// };
String[] PROJECTION = new String[] {ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER
// ContactsContract.CommonDataKinds.Event.CONTACT_ID,
};
// String where = Data.RAW_CONTACT_ID+" = "+mg+";
//(
Cursor cur = cr.query(ContactsContract.Data.CONTENT_URI,
PROJECTION , ContactsContract.Contacts._ID + " = "+ Integer.toString(mg), null, null);
//cur.moveToNext();
if(cur.moveToNext())
{
Log.d("edw", cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
}
// int indexName = cur.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME);
// int indexPhoneType = cur.getColumnIndexOrThrow(Phone.TYPE);
// int contactIdIndex = cur.getColumnIndex(ContactsContract.PhoneLookup._ID) ;
// int contactId = cur.getInt(contactIdIndex);
int indexID = cur.getColumnIndexOrThrow(ContactsContract.Contacts._ID);
int indexName = cur.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME);
int indexPhoneType = cur.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER);
int contactId = cur.getInt(indexID);
int contactName = cur.getInt(indexName);
int contactPhone = cur.getInt(indexPhoneType);
// if (cur.getCount() > 0) {
// while (cur.moveToNext()) {
// id = PROJECTION[0];
// name = PROJECTION[1];
// phoneNumber = PROJECTION[2];
//
// }
// }
id = cur.getString(contactId);
name=cur.getString(contactName);
phoneNumber=cur.getString(contactPhone);
// id=PROJECTION[0];
// name=PROJECTION[2];
// phoneNumber=PROJECTION[3];
// id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
// name = cur
// .getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
// phoneNumber = cur
// .getString(cur
// .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
contactItemsTemp.add(new Contact(Integer.parseInt(id), name, phoneNumber));
cur.close();
}