Android中读取的短信文件有

/** * 所有的短信 */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";

读取的短信信息有:

_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

下面我们可以先建立一个SmsInfo来提取各种信息如下:

package com.pei.info;/** * class name:SmsInfo<BR> * class description:获取短信各种信息的类<BR> * PS: <BR> * Date:2012-3-19<BR> *  * @version 1.00 * @author CODYY)peijiangping */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;}}

然后就是封装类,读取信息内容SmsContent.java

package com.pei.util;import java.util.ArrayList;import java.util.List;import com.pei.info.SmsInfo;import android.app.Activity;import android.database.Cursor;import android.net.Uri;/** * class name:SmsChoose<BR> * class description:获取手机中的各种短信信息<BR> * PS: 需要权限 <uses-permission android:name="android.permission.READ_SMS" /><BR> * Date:2012-3-19<BR> *  * @version 1.00 * @author CODYY)peijiangping */public class SmsContent {private Activity activity;//这里有个activity对象,不知道为啥以前好像不要,现在就要了。自己试试吧。private Uri uri;List<SmsInfo> infos;public SmsContent(Activity activity, Uri uri) {infos = new ArrayList<SmsInfo>();this.activity = activity;this.uri = uri;}/** * Role:获取短信的各种信息 <BR> * Date:2012-3-19 <BR> *  * @author CODYY)peijiangping */public List<SmsInfo> 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 phoneNumberColumn = cusor.getColumnIndex("address");int smsbodyColumn = cusor.getColumnIndex("body");int dateColumn = cusor.getColumnIndex("date");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;}}

在提供一个listview来显示短信内容:

package com.pei.activity;import java.util.List;import com.pei.fixed.AllFinalInfo;import com.pei.info.SmsInfo;import com.pei.util.SmsContent;import android.app.Activity;import android.content.Context;import android.net.Uri;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.TextView;/** * class name:SmsListActivity<BR> * class description:显示短信的列表<BR> * PS: <BR> * Date:2012-3-19<BR> *  * @version 1.00 * @author CODYY)peijiangping */public class SmsListActivity extends Activity {private ListView listview;private List<SmsInfo> infos;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.sms);Uri uri = Uri.parse(AllFinalInfo.SMS_URI_INBOX);SmsContent sc = new SmsContent(this, uri);infos = sc.getSmsInfo();listview = (ListView) this.findViewById(R.id.ListView_Sms);listview.setAdapter(new SmsListAdapter(this));}class SmsListAdapter extends BaseAdapter {private LayoutInflater layoutinflater;private View myview;public SmsListAdapter(Context c) {layoutinflater = LayoutInflater.from(c);}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn infos.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if (convertView == null) {myview = layoutinflater.inflate(R.layout.smsitem, null);}TextView body = (TextView) myview.findViewById(R.id.TextView_SmsBody);TextView name = (TextView) myview.findViewById(R.id.TextView_SmsName);body.setText(infos.get(position).getSmsbody());name.setText(infos.get(position).getName());return myview;}}}

这样你就可以随意的读取各种短信的各种内容了,显示也十分方便。方法还可以继续封装。有待改进。


更多相关文章

  1. Android(安卓)数据存储与读取:SQLite
  2. Android(安卓)数据存储与读取:SQLite
  3. Android(安卓)数据存储与读取:SQLite
  4. Android(安卓)短信的一些关键字
  5. Android短信的发送和广播接收者实现短信的监听
  6. Android从文件目录中写入和读取图片
  7. Android如何保存和读取设置
  8. android简单的天气预报例子和XML解析
  9. 读取raw文件下文件内容

随机推荐

  1. Activity and Task(一)
  2. Android(安卓)Build Target no Target av
  3. 沉浸式状态栏,无缝换肤,带3D感觉的侧滑菜单
  4. Mac OS X下搭建Android(安卓)Source编译
  5. ActivityManagerService启动流程详解
  6. Struts2中一流的方式输出
  7. android中使用代码适配屏幕,dp与px互转、s
  8. 使用编译时注解方式实现View注入(Android
  9. 快速下载ADT-22.6.2(不用登录google)
  10. Android笔记:软键盘弹出遮盖原来界面的布