contentprovider-区分 sms 中的 inbox 和 sentsms

问题描述

区分 sms 中的 inbox 和 sentsms

我创建了一个android程序。在程序中需要列出所有的会话。每个会话包含所有的sms号码。因此我需要区分sms中的inbox和sentsms。
下面的代码用于寻找inbox和sent:

content://sms/inbox
content://sms/sent

但是我不想使用这个方法,我通过使用api列出所有的sms

content://sms/

我使用 columnindex的 type和address 来测试。但是总是给出inbox 和 outbox相同的结果。

Uri SMS_INBOX = Uri.parse("content://sms");
        c = getContentResolver().query(SMS_INBOX, null, "thread_id" + " = "
                        + "3", null,
                        "date" + " ASC");
        if(c.moveToFirst()){
            count.add(c.getCount());
            for(int j=0;j<c.getCount();j++){
                System.out.println(c.getString(c.getColumnIndexOrThrow("body")).toString());
                System.out.println("new   person=="+c.getColumnIndex("person")+"type=="+c.getColumnIndexOrThrow("type"));
                c.moveToNext();
            }
        }
        c.close();

请问如何区分 sms 中的 inbox 和 sentsms?

解决方案

你可以使用 ContentObserver 来追踪发送和接收信息。
重写 ContentObserver 中的 onChange()方法,获得响应的 sms 类型:

Cursor cursor = mContext.getContentResolver().query(Uri
                             .parse("content://sms"), null, null, null, null);

String type = cursor.getColumnIndex("type");
if(cursor.getString(type).equalsIgnoreCase("1")){
    // 接收sms
 }
 else if(cursor.getString(type).equalsIgnoreCase("2")){
    //发送 sms
 }

给 SMS 登记 ContentObserver

ContentResolver observer = this.getContentResolver();
observer.registerContentObserver(Uri.parse("content://sms"),
                               true, new MySMSObserver(new Handler(),this));

MySMSObserver 会使用 Constructor 继承 ContentObserver,Handler and Context作为参数。

public MySMSObserver(Handler handler, Context context) {
        super(handler);
        this.context = context;
}
时间: 2024-11-28 19:34:33

contentprovider-区分 sms 中的 inbox 和 sentsms的相关文章

举例区分Python中的浅复制与深复制

  这篇文章主要介绍了举例区分Python中的浅复制与深复制,是Python入门学习中的重要知识,需要的朋友可以参考下 copy模块用于对象的拷贝操作.该模块非常简单,只提供了两个主要的方法: copy.copy 与 copy.deepcopy ,分别表示浅复制与深复制.什么是浅复制,什么是深复制,网上有一卡车一卡车的资料,这里不作详细介绍.复制操作只对复合对象有效.用简单的例子来分别介绍这两个方法. 浅复制只复制对象本身,没有复制该对象所引用的对象. ? 1 2 3 4 5 6 7 8 9 1

Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果

转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/18730223),请尊重他人的辛勤劳动成果,谢谢! 写这篇文章之前,先简单说几句,首先是先恭喜下自己获得了2013年的博客之星称号,很意外也很开心,自己是从2013年开始写博客,那时候也不知道怎么写,我从小就不喜欢写日记,作文什么的,所以刚开始都是贴代码,也没有人看,后面慢慢的,写的文章被推荐博客首页和CSDN首页(这里也要小小的感谢下小编MM),访问量逐渐

区分java中String+String和String+char_java

我们来考虑一个关于java中String的问题: "abc" + '/'和 "abc" + "/"的区别. 通过这个例子, 我们可以顺便练习一下JDK工具中javap的用法, 原问题是这样的: 把斜杠/当作字符或字符串有什么区别呢? 一个是当作基本数据类型char,一个是对象String.具体有什么区别呢? 当作字符效率会更高吗?String str = "abc" + '/';和String str = "abc&

区分Eclipse中的两种JRE

今天一个CownewStudio的使用者通过QQ问我他的Eclipse安装CownewStudio以后在eclipse中可以看到studio,但是运行的时候提示类加载错误.因为CownewStudio目前的版本只支持JDK5,所以我询问他Eclipse使用的是不是1.4的JRE,但是他确认它用的就是1.5的. 后来经过实验,我确认还是JRE版本的问题,他就把他的Eclipse截图发给了我,以证明他用的是JDK1.5,但是我发现他发过来的图片工程编译器配置对话框的.哈哈,我终于明白了,让他把Ecl

区分JS中的undefined,null,&amp;quot;&amp;quot;,0和false_javascript技巧

在程序语言中定义的各种各样的数据类型中,我们都会为其定义一个"空值"或"假值",比如对象类型的空值null,.NET Framework中数据库字段的空值DBNull,boolean类型的假值false等等.在JavaScript中也有很多种的"空值"和"假值",那么它们都有什么共同点和不同点呢?     其实标题里面我已经列出了JavaScript中所有的"空值"和"假值",除了boo

美帝留学生指南 - 教你快速区分来自中日韩的学森

class="post_content" itemprop="articleBody"> 据称在2013年来自海外.在美国大学拥有学籍的留学生总数突破历史,达到12年来最高记录,留学生总数已经超过80万人.大量华人留学生选择留学美国,主要原因是来自国内媒体对美国大学的宣传报道.留学生的生源主要来自中国.印度.韩国,中印韩生源加在一起占留学生总数的49%,其中中国留学生的数量仍在增加中-- 前几天,留学不久的中国留学生在网上发表了各国留学生的特征.大多数网友对&

详解MySQL查询时区分字符串中字母大小写的方法_Mysql

如果你在mysql有唯一约束的列上插入两行值'A'和'a',Mysql会认为它是相同的,而在oracle中就不会.就是mysql默认的字段值不区分大小写?这点是比较令人头痛的事.直接使用客户端用sql查询数据库. 发现的确是大小不敏感 . 通过查询资料发现需要设置collate(校对) . collate规则: *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的 *_cs: case sensitive collation,区分大小写 *

详解Android中的ContentProvider和Uri

一.使用ContentProvider(内容提供者)共享数据 ContentProvider在android中的作用是对外共 享数据,也就是说你可以通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过 ContentProvider对你应用中的数据进行添删改查.关于数据共享,以前我们学习过文件操作模式,知道通过 指定文件的操作模式为Context.MODE_WORLD_READABLE或Context.MODE_WORLD_WRITEABLE同样也可以对外共享 数

【Android】Android中ContentProvider组件详解

原文来自:http://blog.csdn.net/zuolongsnail/article/details/6566317 ContentProvider(内容提供者)是Android中的四大组件之一.主要用于对外共享数据,也就是通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider对指定应用中的数据进行操作.ContentProvider分为系统的和自定义的,系统的也就是例如联系人,图片等数据.   以下这段是Google Doc中