zoukankan      html  css  js  c++  java
  • android 访问SMS短信收件箱

    访问 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 

  • 相关阅读:
    leetcode——91.解码方法
    leetcode——64.最小路径和
    Layui上传图片2.0版
    LINQ中判断日期时间段
    Http基础
    Js中数组,字符串的常用方法
    C#数组,ArrayList,List区别
    08-01 通过线性回归了解算法流程
    08-00 课程习得
    C-02 推荐系统
  • 原文地址:https://www.cnblogs.com/xiaochao1234/p/3764831.html
Copyright © 2011-2022 走看看