如何显示短信内容提供商?

时间:2016-06-24 08:21:35

标签: android sms

我想从收件箱中读取短信并将其显示在列表视图中,其中包含少量短信内容提供商,如ID,发件人编号,正文,时间。 Rite现在我能够读取短信并在列表视图中仅显示短信的正文,但也需要显示其他字段。 我正在使用Android Studio进行应用开发 这是一个代码,我可以在listview中显示短信的主体

ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, android.R.id.text1, messageArray);
        lv.setAdapter(adapter);
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            }
        });

public ArrayList<String> readAllData() {
ArrayList<String> sms = new ArrayList<>();
Uri us = Uri.parse("content://sms/inbox");
cr = getContentResolver().query(us, null, null, null, null);
String body = cr.getString(cr.getColumnIndexOrThrow("body"));
sms.add(body);
return sms;
}

我想显示Sms ID,发件人姓名和时间。 请任何人都可以帮助我...

2 个答案:

答案 0 :(得分:0)

在listView中显示多个信息。对于初学者,尝试使用CustomAdapter学习列表视图,请参阅以下文章:

Custom Adapter for List View

当你深入理解它时,尝试使用&#34;新版本&#34;列表视图是RecyclerView:http://www.androidhive.info/2016/01/android-working-with-recycler-view/

您还可以在Youtube上轻松找到许多教程,其中包含关键字&#34;自定义列表视图在Android&#34;

我认为这对你有帮助!

答案 1 :(得分:0)

首先,您需要知道有关SMS的列。 Vikas Paditar在这篇文章中列出了他们(标记为最佳答案):https://stackoverflow.com/a/4023737/3953199

接下来,您需要使用getColumnIndexOrThrow(String column) - 方法中的列名称,就像qiuping345在此帖子中所做的那样(也是最佳答案):https://stackoverflow.com/a/5570463/3953199

以下是第二个链接的摘录:

            SmsRep singleSms = new SmsRep();
            singleSms.id = cursor.getInt(cursor.getColumnIndexOrThrow("_id"));
            singleSms.address = cursor.getString(cursor.getColumnIndexOrThrow("address"));
            singleSms.timestamp = cursor.getLong(cursor.getColumnIndexOrThrow("date")) / 1000;   //### the sent time
            singleSms.type = cursor.getInt(cursor.getColumnIndexOrThrow("type"));
            singleSms.protocol = cursor.getInt(cursor.getColumnIndexOrThrow("protocol"));

基本上,您有关于SMS的不同列,它提供了各种信息。