访问 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
源码已上传

- 大小: 22.9 KB
分享到:
相关推荐
开发者可以通过ContentProvider访问这些数据,如使用`Uri.parse("content://sms/inbox")`来查询收件箱中的短信。 5. **短信的发送流程**: 在`SmsManager`的`sendTextMessage()`方法中,开发者需要提供目标电话号码...
例如,`content://sms/inbox`代表收件箱,`content://sms/sent`代表已发送的消息。 6. **SMS Java开发**: `sms_java`标签可能意味着这个压缩包中包含了Java源代码示例,这些代码展示了如何在Java环境中使用...
主要有 inbox(收件箱)、sent(已发送)、drafts(草稿箱)、outbox(发件箱)等表。 - ** pdu 表**: 存储短信的原始 PDU 数据,用于 SMS 的发送和接收。 - ** threads 表**: 用于组织短信对话,每个线程记录了...
例如,`sendTextMessage()`用于发送文本短信,`deleteMessageFrom Inbox()`用于删除收件箱中的短信。 3. **Intent和BroadcastReceiver**:在Android中,短信的接收通常通过注册`BroadcastReceiver`实现,监听`...
如果想筛选特定类型的短信,如只读取收件箱中的短信,可以传入`Uri.parse("content://sms/inbox")`。 4. 查询返回一个Cursor对象,遍历这个Cursor来获取每条短信的数据,如发件人、接收时间、短信内容等。以下是一个...
例如,使用`Uri.parse("content://sms/inbox")`来获取收件箱中的短信,并通过ContentResolver的query()方法来执行SQL查询。 获取到短信内容后,我们需要将其格式化并准备好显示。这可能涉及到字符串处理、日期格式...
- `SMS_URI_INBOX`: 代表收件箱的Uri,内容为 `"content://sms/inbox"`,仅获取收件箱的短信。 - `SMS_URI_SEND`: 代表发件箱的Uri,内容为 `"content://sms/sent"`,仅获取已发送的短信。 - `SMS_URI_DRAFT`: ...
通常,短信存储在`content://sms/`这个URI下,分为收件箱(inbox)、草稿箱(drafts)、发件箱(sent)和已发送(outbox)四个类别。 ```java ContentResolver contentResolver = getContentResolver(); Uri smsUri...
这通常通过ContentResolver和Uri对象完成,如`Uri.parse("content://sms/inbox")`来访问收件箱中的短信。 - **插入数据**:一旦有了数据库的访问权限,你可以使用ContentResolver的`insert()`方法插入一条新的短信...
本知识点将深入探讨如何向Android系统的SQLite数据库中插入短信和彩信数据,以及如何确保这些插入的数据能在用户的收件箱中正常显示。 首先,我们需要理解Android中的短信和彩信管理机制。Android系统使用...
例如,使用`content://sms/inbox` Uri可以获取收件箱中的短信,通过`cursor.getCount()`判断未读短信的数量,再通过`cursor.getString(cursor.getColumnIndex("body"))`获取短信正文。 接下来,ListView下拉刷新是...
要向短信数据库中插入一条假短信,我们需要获得Content Provider的Uri,这个Uri通常是`content://sms/inbox`或`content://sms/sent`,分别对应收件箱和发件箱。 接下来,我们需要编写一个Content Resolver的insert...
- 查询短信:使用`ContentResolver.query()`,指定`Telephony.Sms.Inbox.CONTENT_URI`或`Telephony.Sms.Outbox.CONTENT_URI`来获取收件箱或发件箱的短信。 - 数据处理:遍历Cursor,提取短信的发送者、接收者、...
通常需要指定`Uri`(如`content://sms/inbox`表示收件箱),以及可能的查询条件(如`Selection`和`SelectionArgs`)。查询结果将返回一个`Cursor`对象,可遍历其行数据获取短信详情。 4. **删除短信**: 要删除...
在Android平台上,获取手机电话号码和短信内容是两个不同的任务,涉及到系统权限和特定API的使用。下面将分别详细介绍这两个...同时,根据具体应用场景,可能还需要考虑到短信的分类(如收件箱、草稿箱等)和筛选条件。
// 仅获取收件箱中的短信,可以替换为"content://sms/"获取所有短信 Cursor cursor = getContentResolver().query(smsUri, null, null, null, null); ``` 3. **遍历结果**:如果查询成功,`cursor`将包含短信...
短信数据存储在系统的SMS Content Provider中,通过Uri(统一资源标识符)如`content://sms/inbox`来访问收件箱中的短信。 3. **SQLite数据库**:虽然短信存储在系统Content Provider中,但开发者也可以选择使用...
短信的Uri是`content://sms/`,不同的短信类型(如收件箱、草稿箱等)对应不同的Uri子路径。以下是如何查询收件箱中的短信: ```java ContentResolver contentResolver = getContentResolver(); Uri inboxUri = Uri...