1 つのグループ (たとえば、家族) のすべての詳細を取得しようとしています。
コード:
Cursor c = managedQuery(Data.CONTENT_URI, new String[] {
Contacts.DISPLAY_NAME, Contacts._ID,GroupMembership.CONTACT_ID },
GroupMembership.GROUP_ROW_ID + " = ?",
new String[] { groupID }, Phone.TIMES_CONTACTED + " DESC");
名前と写真を取得:
while (c.moveToNext()&&temp_id<30)
{
String id = c.getString(personIdx);
//c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
Log.e("myTag", id);
// get name
try{
personNameText = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
}catch (Exception e) {
e.printStackTrace();
}
// get photo
try{
bmp = loadContactPhoto(getContentResolver(),Long.parseLong( id));
bmp = bmp.createScaledBitmap(bmp, getResources().getDrawable(R.drawable.contact).getIntrinsicWidth(),
getResources().getDrawable(R.drawable.contact).getIntrinsicHeight(), false);
}catch (Exception e) {
// TODO: handle exception
}
// get number and email
try
{
String hasPhone = c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if ( hasPhone.equalsIgnoreCase("1"))
hasPhone = "true";
else
hasPhone = "false" ;
if (Boolean.parseBoolean(hasPhone))
{
getNumbers(id);
}
}catch (Exception e) {
e.printStackTrace();
}
// get email
String email = "";
try{
Cursor emailCur = getContentResolver().query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
new String[]{id}, null);
while (emailCur.moveToNext()) {
email = emailCur.getString(
emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
}
emailCur.close();
}catch (Exception e) {
e.printStackTrace();
}
データベースに挿入
temp_id++;
insertData(temp_id, bitmaptoByteArray(bmp), phoneNamberText, personNameText,
email);
ここに記載されているすべての機能は非常にうまく機能します。問題は、人の名前だけを取得し、他の詳細を取得しないことです。問題は、間違ったIDを取得することだと思います。助けていただければ幸いです!!!