Если вы хотите использовать DISTINCT с SELECT более чем одним столбцом, вам нужно использовать GROUP BY.
Mini Hack over ContentResolver.query для использования этого:
Uri uri = Uri.parse("content://sms/inbox");
Cursor c = getContentResolver().query(uri,
new String[]{"DISTINCT address","body"}, //DISTINCT
"address IS NOT NULL) GROUP BY (address", //GROUP BY
null, null);
if(c.moveToFirst()){
do{
Log.v("from", "\""+c.getString(c.getColumnIndex("address"))+"\"");
Log.v("text", "\""+c.getString(c.getColumnIndex("body"))+"\"");
} while(c.moveToNext());
}
Этот код выбирает одну последнюю SMS для каждого из отправителей из папки входящих сообщений устройства.
Примечание: перед GROUP BY нам всегда нужно написать хотя бы одно условие.
Результирующая строка запроса SQL внутри метода ContentResolver.query будет:
SELECT DISTINCT address, body FROM sms WHERE (type=1) AND (address IS NOT NULL) GROUP BY (address)