设为首页收藏本站

SKY外语、计算机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5433|回复: 0
打印 上一主题 下一主题

[代码分享] Android中读取的短信<转载>d

[复制链接]

65

主题

3

好友

739

积分

超级版主

Rank: 8Rank: 8

自我介绍
新年第一天据说有雨,全民齐赏日出的计划恐要泡汤。”宋仁宗拍着包拯的肩,“朕决定把你悬挂在城门上。”“但微臣额上的不是太阳是月亮啊!”“没事,挂久一点就会升级成太阳
生肖
星座
狮子座
性别

最佳新人 活跃会员 热心会员 推广达人 宣传达人 灌水之王 突出贡献 优秀版主 论坛元老

跳转到指定楼层
楼主
发表于 2013-7-9 16:42:20 |只看该作者 |倒序浏览
  1. /**

  2. * 所有的短信

  3. */

  4. public static final String SMS_URI_ALL = "content://sms/";

  5. /**

  6. * 收件箱短信

  7. */

  8. public static final String SMS_URI_INBOX = "content://sms/inbox";

  9. /**

  10. * 发件箱短信

  11. */

  12. public static final String SMS_URI_SEND = "content://sms/sent";

  13. /**

  14. * 草稿箱短信

  15. */

  16. public static final String SMS_URI_DRAFT = "content://sms/draft";



  17. 读取的短信信息有:

  18.     _id:短信序号,如100   

  19. *   thread_id:对话的序号,如100,与同一个手机号互发的短信,其序号是相同的   

  20. *   address:发件人地址,即手机号,如+8613811810000   

  21. *   person:发件人,如果发件人在通讯录中则为具体姓名,陌生人为null   

  22. *   date:日期,long型,如1256539465022,可以对日期显示格式进行设置   

  23. *   protocol:协议0SMS_RPOTO短信,1MMS_PROTO彩信      read:是否阅读0未读,1已读   

  24. *   status:短信状态-1接收,0complete,64pending,128failed   

  25. *   type:短信类型1是接收到的,2是已发出      body:短信具体内容   

  26. *   service_center:短信服务中心号码编号,如+8613800755500



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

  28. package com.pei.info;



  29. /**

  30. * class name:SmsInfo


  31. * class description:获取短信各种信息的类


  32. * PS:


  33. * Date:2012-3-19


  34. *

  35. * @version 1.00

  36. * @author CODYY)peijiangping

  37. */

  38. public class SmsInfo {

  39.         /**

  40.          * 短信内容

  41.          */

  42.         private String smsbody;

  43.         /**

  44.          * 发送短信的电话号码

  45.          */

  46.         private String phoneNumber;

  47.         /**

  48.          * 发送短信的日期和时间

  49.          */

  50.         private String date;

  51.         /**

  52.          * 发送短信人的姓名

  53.          */

  54.         private String name;

  55.         /**

  56.          * 短信类型1是接收到的,2是已发出

  57.          */

  58.         private String type;



  59.         public String getSmsbody() {

  60.                 return smsbody;

  61.         }



  62.         public void setSmsbody(String smsbody) {

  63.                 this.smsbody = smsbody;

  64.         }



  65.         public String getPhoneNumber() {

  66.                 return phoneNumber;

  67.         }



  68.         public void setPhoneNumber(String phoneNumber) {

  69.                 this.phoneNumber = phoneNumber;

  70.         }



  71.         public String getDate() {

  72.                 return date;

  73.         }



  74.         public void setDate(String date) {

  75.                 this.date = date;

  76.         }



  77.         public String getName() {

  78.                 return name;

  79.         }



  80.         public void setName(String name) {

  81.                 this.name = name;

  82.         }



  83.         public String getType() {

  84.                 return type;

  85.         }



  86.         public void setType(String type) {

  87.                 this.type = type;

  88.         }

  89. }

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

  91. package com.pei.util;



  92. import java.util.ArrayList;

  93. import java.util.List;



  94. import com.pei.info.SmsInfo;



  95. import android.app.Activity;

  96. import android.database.Cursor;

  97. import android.net.Uri;



  98. /**

  99. * class name:SmsChoose


  100. * class description:获取手机中的各种短信信息


  101. * PS: 需要权限 <uses-permission android:name="android.permission.READ_SMS" />


  102. * Date:2012-3-19


  103. *

  104. * @version 1.00

  105. * @author CODYY)peijiangping

  106. */

  107. public class SmsContent {

  108.         private Activity activity;//这里有个activity对象,不知道为啥以前好像不要,现在就要了。自己试试吧。

  109.         private Uri uri;

  110.         List<SmsInfo> infos;



  111.         public SmsContent(Activity activity, Uri uri) {

  112.                 infos = new ArrayList<SmsInfo>();

  113.                 this.activity = activity;

  114.                 this.uri = uri;

  115.         }



  116.         /**

  117.          * Role:获取短信的各种信息


  118.          * Date:2012-3-19


  119.          *

  120.          * @author CODYY)peijiangping

  121.          */

  122.         public List<SmsInfo> getSmsInfo() {

  123.                 String[] projection = new String[] { "_id", "address", "person",

  124.                                 "body", "date", "type" };

  125.                 Cursor cusor = activity.managedQuery(uri, projection, null, null,

  126.                                 "date desc");

  127.                 int nameColumn = cusor.getColumnIndex("person");

  128.                 int phoneNumberColumn = cusor.getColumnIndex("address");

  129.                 int smsbodyColumn = cusor.getColumnIndex("body");

  130.                 int dateColumn = cusor.getColumnIndex("date");

  131.                 int typeColumn = cusor.getColumnIndex("type");

  132.                 if (cusor != null) {

  133.                         while (cusor.moveToNext()) {

  134.                                 SmsInfo smsinfo = new SmsInfo();

  135.                                 smsinfo.setName(cusor.getString(nameColumn));

  136.                                 smsinfo.setDate(cusor.getString(dateColumn));

  137.                                 smsinfo.setPhoneNumber(cusor.getString(phoneNumberColumn));

  138.                                 smsinfo.setSmsbody(cusor.getString(smsbodyColumn));

  139.                                 smsinfo.setType(cusor.getString(typeColumn));

  140.                                 infos.add(smsinfo);

  141.                         }

  142.                         cusor.close();

  143.                 }

  144.                 return infos;

  145.         }

  146. }

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

  148. package com.pei.activity;



  149. import java.util.List;



  150. import com.pei.fixed.AllFinalInfo;

  151. import com.pei.info.SmsInfo;

  152. import com.pei.util.SmsContent;

  153. import android.app.Activity;

  154. import android.content.Context;

  155. import android.net.Uri;

  156. import android.os.Bundle;

  157. import android.view.LayoutInflater;

  158. import android.view.View;

  159. import android.view.ViewGroup;

  160. import android.widget.BaseAdapter;

  161. import android.widget.ListView;

  162. import android.widget.TextView;



  163. /**

  164. * class name:SmsListActivity


  165. * class description:显示短信的列表


  166. * PS:


  167. * Date:2012-3-19


  168. *

  169. * @version 1.00

  170. * @author CODYY)peijiangping

  171. */

  172. public class SmsListActivity extends Activity {

  173.         private ListView listview;

  174.         private List<SmsInfo> infos;



  175.         @Override

  176.         protected void onCreate(Bundle savedInstanceState) {

  177.                 super.onCreate(savedInstanceState);

  178.                 setContentView(R.layout.sms);

  179.                 Uri uri = Uri.parse(AllFinalInfo.SMS_URI_INBOX);

  180.                 SmsContent sc = new SmsContent(this, uri);

  181.                 infos = sc.getSmsInfo();

  182.                 listview = (ListView) this.findViewById(R.id.ListView_Sms);

  183.                 listview.setAdapter(new SmsListAdapter(this));

  184.         }



  185.         class SmsListAdapter extends BaseAdapter {

  186.                 private LayoutInflater layoutinflater;

  187.                 private View myview;



  188.                 public SmsListAdapter(Context c) {

  189.                         layoutinflater = LayoutInflater.from(c);

  190.                 }



  191.                 @Override

  192.                 public int getCount() {

  193.                         // TODO Auto-generated method stub

  194.                         return infos.size();

  195.                 }



  196.                 @Override

  197.                 public Object getItem(int position) {

  198.                         // TODO Auto-generated method stub

  199.                         return null;

  200.                 }



  201.                 @Override

  202.                 public long getItemId(int position) {

  203.                         // TODO Auto-generated method stub

  204.                         return 0;

  205.                 }



  206.                 @Override

  207.                 public View getView(int position, View convertView, ViewGroup parent) {

  208.                         if (convertView == null) {

  209.                                 myview = layoutinflater.inflate(R.layout.smsitem, null);

  210.                         }

  211.                         TextView body = (TextView) myview

  212.                                         .findViewById(R.id.TextView_SmsBody);

  213.                         TextView name = (TextView) myview

  214.                                         .findViewById(R.id.TextView_SmsName);

  215.                         body.setText(infos.get(position).getSmsbody());

  216.                         name.setText(infos.get(position).getName());

  217.                         return myview;

  218.                 }



  219.         }

  220. }
复制代码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享淘帖0 收藏收藏0 评分评分
您需要登录后才可以回帖 登录 | 立即注册


手机版|SKY外语计算机学习 ( 粤ICP备12031577 )    

GMT+8, 2024-12-22 22:20 , Processed in 0.098833 second(s), 31 queries .

回顶部