訪問 SMS收件箱是另外一個常見的需求。首先,須要將讀取 SMS 的權限
- <uses-permission android:name="android.permission.READ_SMS"/>
添加到描述文件中。添加此權限後就能夠讀取SMS收件箱中的 短消息了。
要讀取 SMS 消息,必須對SMS收件箱執行查詢,下面是咱們的 代碼清單。
佈局文件
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:id="@+id/row"
- android:layout_width="180dip"
- android:layout_height="30dip"
- android:textSize="10pt"
- android:singleLine="true"
- />
- </LinearLayout>
咱們自定義的ListActivity
- package xiaohang.zhimeng;
-
- import android.app.ListActivity;
- import android.database.Cursor;
- import android.net.Uri;
- import android.os.Bundle;
- import android.widget.ListAdapter;
- import android.widget.SimpleCursorAdapter;
-
- public class SMSINboxDemo extends ListActivity {
- private ListAdapter adapter;
- private static final Uri SMS_INBOX = Uri.parse("content://sms/inbox");
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- Cursor c = getContentResolver()
- .query(SMS_INBOX, null, null, null, null);
- startManagingCursor(c);
- String[] columns = new String[] { "body" };
- int[] names = new int[] { R.id.row };
- adapter = new SimpleCursorAdapter(this, R.layout.main, c, columns,
- names);
- setListAdapter(adapter);
- }
- }
上面的代碼打開 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
http://byandby.iteye.com/blog/1044205
app