連絡先の名と姓を取得するための次のコードがあります。
uri = ContactsContract.Data.CONTENT_URI;
Cursor curName = getContentResolver().query(uri, null, ContactsContract.Data.CONTACT_ID +" = "+ contactId, null, null);
if (curName.getCount() > 0){
curName.moveToFirst();
String nameGiven = curName.getString(curName.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));
String nameFamily = curName.getString(curName.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));
log += nameGiven + ", " + nameFamily + ": ";
}
連絡先は 1 つしかないので、ループは必要ありません。2.3.5 デバイスでは問題なく動作し、正しい名前が返されます。ただし、4.0.4 デバイスでは、両方のフィールドに null が返されますが、表示名を要求すると正しく提供されます。
何が問題なのですか?