我正在尝试编写我的第一个Android应用程序,我需要在一个屏幕上显示所有唯一的SMS发件人。像收件箱一样。
但是我无法在内容解析器查询中使用group by或distinct,并且stackoverflow上的所有类似sql-injection的解决方法似乎都不起作用。
我错过了一个明显的方法吗?因为这似乎是一个非常基本的事情。我正在查询SMS数据库,所以也不能使用rawquery(其他类似海报的方法似乎已经使用过)。
非常感谢一些帮助,谢谢。
答案 0 :(得分:0)
找出短信的URL。然后使用内容解析器从该URL获取数据。
答案 1 :(得分:0)
看看我是如何做到的:
// getting sender list from messages into spinner View
Spinner phoneListView = (Spinner) findViewById(R.id.phone_list);
Uri uri = Uri.parse("content://sms/inbox");
Cursor c = getContentResolver().query(uri, new String[]{"Distinct address"}, null, null, null);
List <String> list;
list= new ArrayList<String>();
list.clear();
int msgCount=c.getCount();
if(c.moveToFirst()) {
for(int ii=0; ii < msgCount; ii++) {
list.add(c.getString(c.getColumnIndexOrThrow("address")).toString());
c.moveToNext();
}
}
phoneListView.setAdapter(new ArrayAdapter<String>(BankActivity.this, android.R.layout.simple_dropdown_item_1line, list));