博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 访问SMS短信收件箱
阅读量:6688 次
发布时间:2019-06-25

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

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

    上面的代码打开 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 

转载于:https://www.cnblogs.com/xiaochao1234/p/3764831.html

你可能感兴趣的文章
推荐10个Java方向最热门的开源项目(8月)
查看>>
浅解前端必须掌握的算法(三):直接插入排序
查看>>
[译] TensorFlow 教程 #06 - CIFAR-10
查看>>
处理 JavaScript 复杂对象:深拷贝、Immutable & Immer
查看>>
Kotlin 设计模式系列之单例模式
查看>>
阅读SSH的ERP项目【第二篇】
查看>>
如何有效的避免OOM,温故Java中的引用
查看>>
Objective C基础教程 第一章 启程
查看>>
Android开发人员不得不学习的JavaScript基础(一)
查看>>
阿里云在LC3大会上透露未来要做的两件事
查看>>
关于Socket,看我这几篇就够了(三)原来你是这样的Websocket
查看>>
NSHipster: NSRegularExpression 中文版
查看>>
Android 开发中不得不知道的 Tips 集合 (持续更新 ing)
查看>>
中小型公司对于Spring Cloud的选择与思考
查看>>
javascript函数全解
查看>>
报警系统QuickAlarm之报警规则的设定与加载
查看>>
资深阿里程序猿深入讲解《微服务架构在阿里的演化》
查看>>
学习笔记|AS入门(五) 高级控件篇(下)
查看>>
企业分布式微服务云SpringCloud SpringBoot mybatis (十)Spring Boot多数据源配置与使用Spring-data-jpa支持...
查看>>
【CLI】使用 Curl 下载文件实时进度条显示
查看>>