天天看點

android 通路SMS收件箱

通路 SMS收件箱是另一個常見的需求。首先,需要将讀取 SMS 的權限

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

添加到描述檔案中。添加此權限後就可以讀取SMS收件箱中的 短消息了。

要讀取 SMS 消息,必須對SMS收件箱執行查詢,下面是我們的 代碼清單。

布局檔案

我們自定義的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的清單 擴充卡。執行上面的代碼将看到收件箱中的消息 ,效果圖 如下。

[img]http://dl.iteye.com/upload/attachment/481246/8fbb6ee8-af32-32cb-b43e-66e0acadbec4.jpg[/img]

請大家確定自己的收件箱中有 SMS消息。

因為可以通路SMS收件箱,是以将能夠通路其他與SMS 相關的檔案夾,比如已發送檔案夾或草稿箱檔案夾。通路收件箱與通路其它檔案夾的唯一差別就在于所指定的 URI。例如,可以對 content://sms/sent 執行查詢來通路已發送的檔案夾。以下是完整的 SMS檔案夾清單和每個檔案夾的URI。

[color=green]所有檔案夾: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[/color]

源碼已上傳 :?: