`
byandby
  • 浏览: 1699277 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android 访问SMS收件箱

阅读更多
    访问 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
分享到:
评论

相关推荐

    Sms.rar_MMS_android sms_android 短信_sms_sms android

    开发者可以通过ContentProvider访问这些数据,如使用`Uri.parse("content://sms/inbox")`来查询收件箱中的短信。 5. **短信的发送流程**: 在`SmsManager`的`sendTextMessage()`方法中,开发者需要提供目标电话号码...

    SMS.rar_android_android sms.zip_sms_sms android_sms java

    例如,`content://sms/inbox`代表收件箱,`content://sms/sent`代表已发送的消息。 6. **SMS Java开发**: `sms_java`标签可能意味着这个压缩包中包含了Java源代码示例,这些代码展示了如何在Java环境中使用...

    安卓Android源码——sms1.rar

    主要有 inbox(收件箱)、sent(已发送)、drafts(草稿箱)、outbox(发件箱)等表。 - ** pdu 表**: 存储短信的原始 PDU 数据,用于 SMS 的发送和接收。 - ** threads 表**: 用于组织短信对话,每个线程记录了...

    Android SMS

    例如,`sendTextMessage()`用于发送文本短信,`deleteMessageFrom Inbox()`用于删除收件箱中的短信。 3. **Intent和BroadcastReceiver**:在Android中,短信的接收通常通过注册`BroadcastReceiver`实现,监听`...

    (android studio)安卓实验查看系统短信

    如果想筛选特定类型的短信,如只读取收件箱中的短信,可以传入`Uri.parse("content://sms/inbox")`。 4. 查询返回一个Cursor对象,遍历这个Cursor来获取每条短信的数据,如发件人、接收时间、短信内容等。以下是一个...

    Android SMS 短信内容显示在一个 泡泡 形状的窗口中.zip

    例如,使用`Uri.parse("content://sms/inbox")`来获取收件箱中的短信,并通过ContentResolver的query()方法来执行SQL查询。 获取到短信内容后,我们需要将其格式化并准备好显示。这可能涉及到字符串处理、日期格式...

    获取Android手机中所有短信的实现代码

    - `SMS_URI_INBOX`: 代表收件箱的Uri,内容为 `"content://sms/inbox"`,仅获取收件箱的短信。 - `SMS_URI_SEND`: 代表发件箱的Uri,内容为 `"content://sms/sent"`,仅获取已发送的短信。 - `SMS_URI_DRAFT`: ...

    Android获取手机短信

    通常,短信存储在`content://sms/`这个URI下,分为收件箱(inbox)、草稿箱(drafts)、发件箱(sent)和已发送(outbox)四个类别。 ```java ContentResolver contentResolver = getContentResolver(); Uri smsUri...

    android模拟短信插入和接收

    这通常通过ContentResolver和Uri对象完成,如`Uri.parse("content://sms/inbox")`来访问收件箱中的短信。 - **插入数据**:一旦有了数据库的访问权限,你可以使用ContentResolver的`insert()`方法插入一条新的短信...

    android向db插入短信及彩信数据

    本知识点将深入探讨如何向Android系统的SQLite数据库中插入短信和彩信数据,以及如何确保这些插入的数据能在用户的收件箱中正常显示。 首先,我们需要理解Android中的短信和彩信管理机制。Android系统使用...

    Android管理手机短信

    例如,使用`content://sms/inbox` Uri可以获取收件箱中的短信,通过`cursor.getCount()`判断未读短信的数量,再通过`cursor.getString(cursor.getColumnIndex("body"))`获取短信正文。 接下来,ListView下拉刷新是...

    android给自己发假短信

    要向短信数据库中插入一条假短信,我们需要获得Content Provider的Uri,这个Uri通常是`content://sms/inbox`或`content://sms/sent`,分别对应收件箱和发件箱。 接下来,我们需要编写一个Content Resolver的insert...

    Android通讯录管理(获取联系人、通话记录、短信消息)

    - 查询短信:使用`ContentResolver.query()`,指定`Telephony.Sms.Inbox.CONTENT_URI`或`Telephony.Sms.Outbox.CONTENT_URI`来获取收件箱或发件箱的短信。 - 数据处理:遍历Cursor,提取短信的发送者、接收者、...

    SmsReadDemo

    通常需要指定`Uri`(如`content://sms/inbox`表示收件箱),以及可能的查询条件(如`Selection`和`SelectionArgs`)。查询结果将返回一个`Cursor`对象,可遍历其行数据获取短信详情。 4. **删除短信**: 要删除...

    android 获取手机电话号码短信内容

    在Android平台上,获取手机电话号码和短信内容是两个不同的任务,涉及到系统权限和特定API的使用。下面将分别详细介绍这两个...同时,根据具体应用场景,可能还需要考虑到短信的分类(如收件箱、草稿箱等)和筛选条件。

    读取android手机内所有短信

    // 仅获取收件箱中的短信,可以替换为"content://sms/"获取所有短信 Cursor cursor = getContentResolver().query(smsUri, null, null, null, null); ``` 3. **遍历结果**:如果查询成功,`cursor`将包含短信...

    Android代码-安卓短信助手

    短信数据存储在系统的SMS Content Provider中,通过Uri(统一资源标识符)如`content://sms/inbox`来访问收件箱中的短信。 3. **SQLite数据库**:虽然短信存储在系统Content Provider中,但开发者也可以选择使用...

    Android: 读取短信

    短信的Uri是`content://sms/`,不同的短信类型(如收件箱、草稿箱等)对应不同的Uri子路径。以下是如何查询收件箱中的短信: ```java ContentResolver contentResolver = getContentResolver(); Uri inboxUri = Uri...

Global site tag (gtag.js) - Google Analytics