我正在尝试编写我的第一个 android 应用程序,我需要在一个屏幕上显示所有唯一的 SMS 发件人。就像收件箱一样。
但是我无法在内容解析器查询中使用 group by 或 distinct,并且 stackoverflow 上的所有类似 sql-injection 的解决方法似乎都不起作用。
我错过了一个明显的方法吗?因为这似乎是一件非常基本的事情。我正在查询 SMS 数据库,因此也不能使用 rawquery(其他类似海报似乎使用过的方法)。
一些帮助将不胜感激,谢谢。
我正在尝试编写我的第一个 android 应用程序,我需要在一个屏幕上显示所有唯一的 SMS 发件人。就像收件箱一样。
但是我无法在内容解析器查询中使用 group by 或 distinct,并且 stackoverflow 上的所有类似 sql-injection 的解决方法似乎都不起作用。
我错过了一个明显的方法吗?因为这似乎是一件非常基本的事情。我正在查询 SMS 数据库,因此也不能使用 rawquery(其他类似海报似乎使用过的方法)。
一些帮助将不胜感激,谢谢。
只需找出 SMS 的 URL。然后使用内容解析器从该 URL 获取数据。
看看我是怎么做到的:
// 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));