悲しいかな、私の電話帳には約500の連絡先があり、サンダーバードと同期した後、何らかの理由で表示名がランダムに最後、最初、最初、最後になります。だから私は、最初に表示名を最後までやり直すために、簡単なウィジェットをまとめると思いました。私が使用するコードは以下のとおりですが、最後/最初の値を取得していません。カーソル内のキー(data1、data2)は存在しますが、値はそれぞれ「1」とnullでした。何か案は?
Cursor cursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext() != false) {
String id = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
String fname = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));
String lname = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));
if (lname != null && lname.length() > 0) {
String sDName = lname + "," + fname;
ContentValues values = new ContentValues();
values.put(ContactsContract.Contacts.DISPLAY_NAME, sDName);
getContentResolver().update(ContactsContract.Data.CONTENT_URI, values, ContactsContract.Contacts._ID+"=", new String[] {id});
}
}