试图在Android中显示所有独特的SMS发件人

时间:2013-08-16 18:26:41

标签: android group-by sms android-contentresolver

我正在尝试编写我的第一个Android应用程序,我需要在一个屏幕上显示所有唯一的SMS发件人。像收件箱一样。

但是我无法在内容解析器查询中使用group by或distinct,并且stackoverflow上的所有类似sql-injection的解决方法似乎都不起作用。

我错过了一个明显的方法吗?因为这似乎是一个非常基本的事情。我正在查询SMS数据库,所以也不能使用rawquery(其他类似海报的方法似乎已经使用过)。

非常感谢一些帮助,谢谢。

2 个答案:

答案 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));