访问 SMS收件箱是另一个常见的需求。首先,需要将读取 SMS 的权限

 
  1. <uses-permission android:name="android.permission.READ_SMS"/>

添加到描述文件中。添加此权限后就可以读取SMS收件箱中的 短消息了。

要读取 SMS 消息,必须对SMS收件箱执行查询,下面是我们的 代码清单。

布局文件

 
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:id="@+id/row"
  9. android:layout_width="180dip"
  10. android:layout_height="30dip"
  11. android:textSize="10pt"
  12. android:singleLine="true"
  13. />
  14. </LinearLayout>

我们自定义的ListActivity

 
  1. package xiaohang.zhimeng;
  2. import android.app.ListActivity;
  3. import android.database.Cursor;
  4. import android.net.Uri;
  5. import android.os.Bundle;
  6. import android.widget.ListAdapter;
  7. import android.widget.SimpleCursorAdapter;
  8. public class SMSINboxDemo extends ListActivity {
  9. private ListAdapter adapter;
  10. private static final Uri SMS_INBOX = Uri.parse("content://sms/inbox");
  11. @Override
  12. public void onCreate(Bundle savedInstanceState) {
  13. super.onCreate(savedInstanceState);
  14. Cursor c = getContentResolver()
  15. .query(SMS_INBOX, null, null, null, null);
  16. startManagingCursor(c);
  17. String[] columns = new String[] { "body" };
  18. int[] names = new int[] { R.id.row };
  19. adapter = new SimpleCursorAdapter(this, R.layout.main, c, columns,
  20. names);
  21. setListAdapter(adapter);
  22. }
  23. }

上面的代码打开 SMS收件箱并创建了一个列表,列表中的每一项都包含 SMS消息的正文部分。我们的布局文件就只包含了一个简单的 TextView,它包含列表项中每条消息的正文。要获得消息列表,可以创建指向 SMS收件箱的 URI (content://sms/inbox),然后执行简单查询。然后对 SMS消息的正文进行过滤,并设置  ListActivity的列表 适配器。执行上面的代码将看到收件箱中的消息 ,效果图 如下。

请大家确保自己的收件箱中有 SMS消息。

因为可以访问SMS收件箱,所以将能够访问其他与SMS 相关的文件夹,比如已发送文件夹或草稿箱文件夹。访问收件箱与访问其它文件夹的唯一区别就在于所指定的 URI。例如,可以对 content://sms/sent 执行查询来访问已发送的文件夹。以下是完整的 SMS文件夹列表和每个文件夹的URI。 
    
    所有文件夹:content://sms/all 
   收件箱:content://sms/inbox 
   已发送:content://sms/sent 
   草稿:content://sms/draft 
   发件箱:content://sms/outbox 
   发送失败:content://sms/failed 
   排队消息:content://sms/queued 
   未送达:content://sms/undelivered

对话:content://sms/conversations

android 访问SMS短信收件箱的更多相关文章

  1. Android4.4 往短信收件箱中插入自定义短信(伪造短信)

    这段时间稍微有点空闲,把前一段学习Android做过的一些小项目整理整理.虽然没有什么工程量很大的项目,但是对于一个新手,解决这些问题还是花了一段时间.感觉还是非常有记录的意义呢~~~么么哒*—* 今 ...

  2. JavaMail读取收件箱退信邮件/分析邮件附件获取Message_Id

    需求描述:公司最近有个项目邮件通知功能,但是客户上传的邮件地址并不一定存在,以及其他的各种问题.所有希望发送通知后有个回执,及时发现地址存在问题的邮箱. 需求分析:经过分析JavaMail可以读取收件 ...

  3. android 管理手机短信

    为了看代码方便,一边在网上google资料,一边看Android java 源代码. 偶然发现了一个类MmsSmsDatabaseHelper.java,原来android将所有的短信信息都存入了mm ...

  4. android 中管理短信

    为了看代码方便,一边在网上google资料,一边看Android java 源代码. 偶然发现了一个类MmsSmsDatabaseHelper.java,原来android将所有的短信信息都存入了mm ...

  5. Android中读取短信信息

    Android中读取的短信文件有 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /**  * 所有的短信  */ public static final Strin ...

  6. Android 读取手机短信

    获取android手机短信需要在AndroidManifest.xml加权限: <uses-permission android:name="android.permission.RE ...

  7. android 监听短信数据库,制作短信控制工具,控制别人的手机!!(一)

    序言:本程序示例本着简洁易懂的目的,只做了简单的功能实现,需要用户启动应用,收到短信才有效果.作者将会在后面的(二)篇中加入服务后台运行.自动启动功能,实现一个真正的短信控制工具.本文的目的很简单,让 ...

  8. Android自动读取短信验证码

    Android自动读取短信验证码  extends:http://www.cnblogs.com/jiayaguang/p/4366384.html,http://blog.csdn.net/yung ...

  9. android 添加手机短信,获取手机短信,删除手机短信和修改手机短信

    注意添加权限: <uses-permission android:name="android.permission.READ_SMS"></uses-permis ...

随机推荐

  1. CPC23-4 K.喵喵的神·数

    题意:给出整数T,P,求c(T,P) mod P. 解法:用卢卡斯定理. 卢卡斯定理:解决c(n,m) mod p问题.Lucas(n,m,p)=c(n%p,m%p)*Lucas(n/p,m/p,p) ...

  2. 1047图的深度优先遍历c语言

    描述 图(graph)是数据结构 G=(V,E),其中V是G中结点的有限非空集合,结点的偶对称为边(edge):E是G中边的有限集合.设V={0,1,2,……,n-1},图中的结点又称为顶点(vert ...

  3. ashx-auth-黑色简洁验证码

    ylbtech-util: ashx-auth-黑色简洁验证码 ashx-auth-黑色简洁验证码 1.A,效果图返回顶部   1.B,源代码返回顶部 /ImageUniqueCode.ashx &l ...

  4. HDU-4882 ZCC Loves Codefires

    http://acm.hdu.edu.cn/showproblem.php?pid=4882 ZCC Loves Codefires Time Limit: 2000/1000 MS (Java/Ot ...

  5. 《Python核心编程》 第四章 Python对象- 课后习题

    练习 4-1. Python对象.与所有Python对象有关的三个属性是什么?请简单的描述一下. 答:身份.类型和值: 身份:每一个对象都有一个唯一的身份标识自己,可以用id()得到.  类型:对象的 ...

  6. 数据库表中MAX ID获取,确保每次调用没有重复工具类(NumberUtil)

    下面这个类是获取数据库中一个字段的最大值.配置在数据库中. public class NoFactory { private final static Logger cLogger = Logger. ...

  7. CentOS7 mariadb 修改编码

    CentOS7 mariadb 编码的修改: 网上看了不少的解决方案,要么是比较老的,要么是不正确,测试成功的方式,记录备查. 登录MySQL,使用SHOW VARIABLES LIKE 'chara ...

  8. CentOS搭建LAMP环境

    最近准备安装roundcube,需要先搭建一个 LAMP 运行环境,从网上搜索了一下,有不少资料.自己也按部就班安装了一遍,把过程整理了下来. LAMP 是Linux, Apache, MySQL, ...

  9. Windows7 32位下opencv与python2.66的环境配置

    刚接触Python和OpenCV,对两者都不太了解,因为今后学习会使用到这两种工具,特此学习配置.PS:本帖适用小白. 一. 需要的文件 1. OpenCV 可用OpenCV-2.3.1-win-su ...

  10. MapReduce TopK统计加排序

    Hadoop技术内幕中指出Top K算法有两步,一是统计词频,二是找出词频最高的前K个词.在网上找了很多MapReduce的Top K案例,这些案例都只有排序功能,所以自己写了个案例. 这个案例分两个 ...