SMS管理:收信箱 发信息 编写新信息
SMS管理
?
?
[功能]
?
1. 收信箱:显示所有收到的信息 且实时显示 即:当有新信息收到 能自动刷新显示
?
2. 发信箱:显示所有已发信息 同上
?
3. 编写新信息: 鉴于一些问题 打算不自行定义 而只通过Intent调用系统的
?
?
?
[原理]
?
1. 通过目标Uri显示收信箱 发信箱 ?目标Uri:content://sms/inbox content://sms/sent
?
2. 实时刷新:一个办法是开辟thread 定时查询目标Uri 显示之 ?但会带来一些效能影响 所以决定使用ContentObserve监听目标Uri 当有变动 由ContentObserve通知注册方 该Uri:content://sms
?
3. 注意:ContentObserve不能监听: content://sms/inbox & content://sms/sent 而只能监听content://sms
?
?
[代码 步骤]
?
1. 定义SMSObserver 用于监听目标 并通过Handle通知注册方
?
?
?
?
- 2.3.2. 其中2个TextView 分别显示信息地址和正文 2个Button 一个用于关闭当前窗口 一个用于短信回复 且自动填充 收信人地址
?
?
?
?
3. 鉴于SMSSent与SMSInbox大同小异 故不再细说 仅补上代码
?
?
?
> 4.2. SMSSent
?
- 4.2.1. 已发短信记录:
?
?
- 4.2.2. SMSSent:
?
?
?
?
?
5. 未解决问题:
?
> 5.1. ContentObserver 只能监听content://sms ?而不支持content://sms/inbox content://sms/sent ?个人猜测是因为:android 在写sms数据库 insert(...) 没有通过ContentResolver通知content://sms/inbox content://sms/sent 所致 即:没有以下代码:
?
getContext().getContentResolver().notifyChange(noteUri, null);
?
?
6. 如果写的有问题的 欢迎讨论 ?否则 请回帖支持一些
?
1 楼 lveyo 2010-06-07 请问,如果遇到群发信息,程序怎么处理? 2 楼 gryphone 2010-06-07 lveyo 写道请问,如果遇到群发信息,程序怎么处理?
群发?抱歉 因为我没有真机做测试 而emulator又不支持
不过那要看我怎么做了吧 3 楼 ableouou 2010-10-27 要做就基于源码开发吧 4 楼 zhq56030207 2010-12-08 当短信的数目发生变化时,如何监听得到/? 5 楼 wzbhbb 2011-04-02 好文章,受益了,不知“ 而不支持content://sms/inbox content://sms/sent ”这句话是什么意思?