博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android进阶之读取手机短信显示listview
阅读量:2194 次
发布时间:2019-05-02

本文共 6468 字,大约阅读时间需要 21 分钟。

一、读取的短信信息有

  •   _id:短信序号,如100   
  •   thread_id:对话的序号,如100,与同一个手机号互发的短信,其序号是相同的   
  •   address:发件人地址,即手机号,如+8613811810000   
  •   person:发件人,如果发件人在通讯录中则为具体姓名,陌生人为null   
  •   date:日期,long型,如1256539465022,可以对日期显示格式进行设置   
  •   protocol:协议0SMS_RPOTO短信,1MMS_PROTO彩信      read:是否阅读0未读,1已读   
  •   status:短信状态-1接收,0complete,64pending,128failed   
  •   type:短信类型1是接收到的,2是已发出      
  •   body:短信具体内容   
  •   service_center:短信服务中心号码编号,如+8613800755500

二、例子代码

1、权限

2、item_sms.xml

3、activity_sms.xml

4、SmsInfo

package com.guan.contentproviderwork.contact;/** * @author Guan * @file com.guan.contentproviderwork.contact * @date 2015/9/9 * @Version 1.0 */public class SmsInfo {
/** * 短信内容 */ private String smsbody; /** * 发送短信的电话号码 */ private String phoneNumber; /** * 发送短信的日期和时间 */ private String date; /** * 发送短信人的姓名 */ private String name; /** * 短信类型1是接收到的,2是已发出 */ private String type; public String getSmsbody() { return smsbody; } public void setSmsbody(String smsbody) { this.smsbody = smsbody; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getType() { return type; } public void setType(String type) { this.type = type; }}

5、SmsContent类读取信息内容

package com.guan.contentproviderwork.contact;import android.app.Activity;import android.database.Cursor;import android.net.Uri;import java.util.ArrayList;import java.util.List;/** * @author Guan * @file com.guan.contentproviderwork.contact * @date 2015/9/9 * @Version 1.0 */public class SmsContent {
private Activity activity; private Uri uri; List
infos; public SmsContent(Activity activity, Uri uri) { infos = new ArrayList
(); this.activity = activity; this.uri = uri; } /** * Role:获取短信的各种信息
* Date:2012-3-19
* * @author CODYY)peijiangping */ public List
getSmsInfo() { String[] projection = new String[] { "_id", "address", "person", "body", "date", "type" }; Cursor cusor = activity.managedQuery(uri, projection, null, null, "date desc"); int nameColumn = cusor.getColumnIndex("person"); int dateColumn = cusor.getColumnIndex("date"); int phoneNumberColumn = cusor.getColumnIndex("address"); int smsbodyColumn = cusor.getColumnIndex("body"); int typeColumn = cusor.getColumnIndex("type"); if (cusor != null) { while (cusor.moveToNext()) { SmsInfo smsinfo = new SmsInfo(); smsinfo.setName(cusor.getString(nameColumn)); smsinfo.setDate(cusor.getString(dateColumn)); smsinfo.setPhoneNumber(cusor.getString(phoneNumberColumn)); smsinfo.setSmsbody(cusor.getString(smsbodyColumn)); smsinfo.setType(cusor.getString(typeColumn)); infos.add(smsinfo); } cusor.close(); } return infos; }}

6、SmsListAdapter

package com.guan.contentproviderwork.contact;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import com.guan.contentproviderwork.R;import java.util.List;import butterknife.Bind;import butterknife.ButterKnife;/** * @author Guan * @file com.guan.contentproviderwork.contact * @date 2015/9/9 * @Version 1.0 */public class SmsListAdapter extends BaseAdapter {
private LayoutInflater layoutinflater; private List
mInfos; public SmsListAdapter(Context context,List
infos) { this.layoutinflater = LayoutInflater.from(context); this.mInfos = infos; } @Override public int getCount() { return mInfos.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView != null) { holder = (ViewHolder) convertView.getTag(); } else { convertView = layoutinflater.inflate(R.layout.item_sms, null); holder = new ViewHolder(convertView); convertView.setTag(holder); } holder.tvSmsName.setText(mInfos.get(position).getPhoneNumber()); holder.tvSmsBody.setText(mInfos.get(position).getSmsbody()); return convertView; } static class ViewHolder { @Bind(R.id.tv_Sms_name) TextView tvSmsName; @Bind(R.id.tv_Sms_body) TextView tvSmsBody; ViewHolder(View view) { ButterKnife.bind(this, view); } }}

7、SmsListActivity

package com.guan.contentproviderwork.contact;import android.app.Activity;import android.net.Uri;import android.os.Bundle;import android.widget.ListView;import com.guan.contentproviderwork.R;import java.util.List;import butterknife.Bind;import butterknife.ButterKnife;public class SmsListActivity extends Activity {
@Bind(R.id.lv_sms) ListView lvSms; private List
infos; /** * 所有的短信 */ public static final String SMS_URI_ALL = "content://sms/"; /** * 收件箱短信 */ public static final String SMS_URI_INBOX = "content://sms/inbox"; /** * 发件箱短信 */ public static final String SMS_URI_SEND = "content://sms/sent"; /** * 草稿箱短信 */ public static final String SMS_URI_DRAFT = "content://sms/draft"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sms); ButterKnife.bind(this); Uri uri = Uri.parse(SMS_URI_INBOX); SmsContent sc = new SmsContent(this, uri); infos = sc.getSmsInfo(); lvSms.setAdapter(new SmsListAdapter(this,infos)); }}

三、参考链接

四、效果图

这里写图片描述

你可能感兴趣的文章
关于PHP几点建议
查看>>
硬盘的接口、协议
查看>>
VLAN与子网划分区别
查看>>
Cisco Packet Tracer教程
查看>>
02. 交换机的基本配置和管理
查看>>
03. 交换机的Telnet远程登陆配置
查看>>
微信小程序-调用-腾讯视频-解决方案
查看>>
phpStudy安装yaf扩展
查看>>
密码 加密 加盐 常用操作记录
查看>>
TP 分页后,调用指定页。
查看>>
Oracle数据库中的(+)连接
查看>>
java-oracle中几十个实用的PL/SQL
查看>>
PLSQL常用方法汇总
查看>>
几个基本的 Sql Plus 命令 和 例子
查看>>
PLSQL单行函数和组函数详解
查看>>
Oracle PL/SQL语言初级教程之异常处理
查看>>
Oracle PL/SQL语言初级教程之游标
查看>>
Oracle PL/SQL语言初级教程之操作和控制语言
查看>>
Oracle PL/SQL语言初级教程之过程和函数
查看>>
Oracle PL/SQL语言初级教程之表和视图
查看>>