Android中读取的短信文件有

01 /**
02 * 所有的短信
03 */
04 publicstaticfinalString SMS_URI_ALL ="content://sms/";
05 /**
06 * 收件箱短信
07 */
08 publicstaticfinalString SMS_URI_INBOX ="content://sms/inbox";
09 /**
10 * 发件箱短信
11 */
12 publicstaticfinalString SMS_URI_SEND ="content://sms/sent";
13 /**
14 * 草稿箱短信
15 */
16 publicstaticfinalString 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来提取各种信息如下:

01 packagecom.pei.info;
02
03 /**
04 * class name:SmsInfo<BR>
05 * class description:获取短信各种信息的类<BR>
06 * PS: <BR>
07 * Date:2012-3-19<BR>
08 *
09 * @version 1.00
10 * @author CODYY)peijiangping
11 */
12 publicclassSmsInfo {
13 /**
14 * 短信内容
15 */
16 privateString smsbody;
17 /**
18 * 发送短信的电话号码
19 */
20 privateString phoneNumber;
21 /**
22 * 发送短信的日期和时间
23 */
24 privateString date;
25 /**
26 * 发送短信人的姓名
27 */
28 privateString name;
29 /**
30 * 短信类型1是接收到的,2是已发出
31 */
32 privateString type;
33
34 publicString getSmsbody() {
35 returnsmsbody;
36 }
37
38 publicvoidsetSmsbody(String smsbody) {
39 this.smsbody = smsbody;
40 }
41
42 publicString getPhoneNumber() {
43 returnphoneNumber;
44 }
45
46 publicvoidsetPhoneNumber(String phoneNumber) {
47 this.phoneNumber = phoneNumber;
48 }
49
50 publicString getDate() {
51 returndate;
52 }
53
54 publicvoidsetDate(String date) {
55 this.date = date;
56 }
57
58 publicString getName() {
59 returnname;
60 }
61
62 publicvoidsetName(String name) {
63 this.name = name;
64 }
65
66 publicString getType() {
67 returntype;
68 }
69
70 publicvoidsetType(String type) {
71 this.type = type;
72 }
73 }

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

01 packagecom.pei.util;
02
03 importjava.util.ArrayList;
04 importjava.util.List;
05
06 importcom.pei.info.SmsInfo;
07
08 importandroid.app.Activity;
09 importandroid.database.Cursor;
10 importandroid.net.Uri;
11
12 /**
13 * class name:SmsChoose<BR>
14 * class description:获取手机中的各种短信信息<BR>
15 * PS: 需要权限 <uses-permission android:name="android.permission.READ_SMS" /><BR>
16 * Date:2012-3-19<BR>
17 *
18 * @version 1.00
19 * @author CODYY)peijiangping
20 */
21 publicclassSmsContent {
22 privateActivity activity;//这里有个activity对象,不知道为啥以前好像不要,现在就要了。自己试试吧。
23 privateUri uri;
24 List<SmsInfo> infos;
25
26 publicSmsContent(Activity activity, Uri uri) {
27 infos =newArrayList<SmsInfo>();
28 this.activity = activity;
29 this.uri = uri;
30 }
31
32 /**
33 * Role:获取短信的各种信息 <BR>
34 * Date:2012-3-19 <BR>
35 *
36 * @author CODYY)peijiangping
37 */
38 publicList<SmsInfo> getSmsInfo() {
39 String[] projection =newString[] {"_id","address","person",
40 "body","date","type"};
41 Cursor cusor = activity.managedQuery(uri, projection,null,null,
42 "date desc");
43 intnameColumn = cusor.getColumnIndex("person");
44 intphoneNumberColumn = cusor.getColumnIndex("address");
45 intsmsbodyColumn = cusor.getColumnIndex("body");
46 intdateColumn = cusor.getColumnIndex("date");
47 inttypeColumn = cusor.getColumnIndex("type");
48 if(cusor !=null) {
49 while(cusor.moveToNext()) {
50 SmsInfo smsinfo =newSmsInfo();
51 smsinfo.setName(cusor.getString(nameColumn));
52 smsinfo.setDate(cusor.getString(dateColumn));
53 smsinfo.setPhoneNumber(cusor.getString(phoneNumberColumn));
54 smsinfo.setSmsbody(cusor.getString(smsbodyColumn));
55 smsinfo.setType(cusor.getString(typeColumn));
56 infos.add(smsinfo);
57 }
58 cusor.close();
59 }
60 returninfos;
61 }
62 }

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

01 packagecom.pei.activity;
02
03 importjava.util.List;
04
05 importcom.pei.fixed.AllFinalInfo;
06 importcom.pei.info.SmsInfo;
07 importcom.pei.util.SmsContent;
08 importandroid.app.Activity;
09 importandroid.content.Context;
10 importandroid.net.Uri;
11 importandroid.os.Bundle;
12 importandroid.view.LayoutInflater;
13 importandroid.view.View;
14 importandroid.view.ViewGroup;
15 importandroid.widget.BaseAdapter;
16 importandroid.widget.ListView;
17 importandroid.widget.TextView;
18
19 /**
20 * class name:SmsListActivity<BR>
21 * class description:显示短信的列表<BR>
22 * PS: <BR>
23 * Date:2012-3-19<BR>
24 *
25 * @version 1.00
26 * @author CODYY)peijiangping
27 */
28 publicclassSmsListActivityextendsActivity {
29 privateListView listview;
30 privateList<SmsInfo> infos;
31
32 @Override
33 protectedvoidonCreate(Bundle savedInstanceState) {
34 super.onCreate(savedInstanceState);
35 setContentView(R.layout.sms);
36 Uri uri = Uri.parse(AllFinalInfo.SMS_URI_INBOX);
37 SmsContent sc =newSmsContent(this, uri);
38 infos = sc.getSmsInfo();
39 listview = (ListView)this.findViewById(R.id.ListView_Sms);
40 listview.setAdapter(newSmsListAdapter(this));
41 }
42
43 classSmsListAdapterextendsBaseAdapter {
44 privateLayoutInflater layoutinflater;
45 privateView myview;
46
47 publicSmsListAdapter(Context c) {
48 layoutinflater = LayoutInflater.from(c);
49 }
50
51 @Override
52 publicintgetCount() {
53 // TODO Auto-generated method stub
54 returninfos.size();
55 }
56
57 @Override
58 publicObject getItem(intposition) {
59 // TODO Auto-generated method stub
60 returnnull;
61 }
62
63 @Override
64 publiclonggetItemId(intposition) {
65 // TODO Auto-generated method stub
66 return0;
67 }
68
69 @Override
70 publicView getView(intposition, View convertView, ViewGroup parent) {
71 if(convertView ==null) {
72 myview = layoutinflater.inflate(R.layout.smsitem,null);
73 }
74 TextView body = (TextView) myview
75 .findViewById(R.id.TextView_SmsBody);
76 TextView name = (TextView) myview
77 .findViewById(R.id.TextView_SmsName);
78 body.setText(infos.get(position).getSmsbody());
79 name.setText(infos.get(position).getName());
80 returnmyview;
81 }
82
83 }
84 }

更多相关文章

  1. 打电话和发短信程序
  2. android短信demo
  3. Android读取手机短信
  4. Android(安卓)SMS(一) —— 读取短信
  5. 获得位置信息 android
  6. Android(安卓)SMS(一) —— 读取短信
  7. android中读取短信
  8. Android发送短信
  9. android中操纵sqlite数据库

随机推荐

  1. android和html交互--动态注入方法
  2. Android(安卓)SimpleAdapter源码详解
  3. Crazy Android Note Chapter-8
  4. Android动画效果 translate、scale、alph
  5. Android手机软键盘enter改为搜索
  6. android 127.0.0.1/localhost connection
  7. Android(安卓)和 target 分析
  8. Android tabLayout+recyclerView实现锚点
  9. android彻底结束进程的两种方法
  10. Android TV开发之坑(1)——安装后找不到图