ContentObserver——内容观察者
来源:互联网 发布:阿里妈妈 知乎 编辑:程序博客网 时间:2024/05/21 11:17
下面出处:http://blog.csdn.net/by317966834/article/details/7591451
ContentObserver——内容观察者,目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理,它类似于
数据库技术中的触发器(Trigger),当ContentObserver所观察的Uri发生变化时,便会触发它。触发器分为表触发器、行触发器,
相应地ContentObserver也分为“表“ContentObserver、“行”ContentObserver,当然这是与它所监听的Uri MIME Type有关的。
熟悉Content Provider(内容提供者)的应该知道,我们可以通过UriMatcher类注册不同类型的Uri,我们可以通过这些不同的
Uri来查询不同的结果。根据Uri返回的结果,Uri Type可以分为:返回多条数据的Uri、返回单条数据的Uri。
短信的Uri共有一下几种:
content://sms/inbox 收件箱
content://sms/sent 已发送
content://sms/draft 草稿
content://sms/outbox 发件箱 (正在发送的信息)
content://sms/failed 发送失败
content://sms/queued 待发送列表 (比如开启飞行模式后,该短信就在待发送列表里)
http://blog.csdn.net/wanglj0925/article/details/7599082
下面个人经验部分:
监听短信,并将获取的验证码自动填入待填区!
public class smsObserver extends ContentObserver{
private Context mContext;
private Handler mHandler;
public smsObserver(Context mContext, Handler mHandler) {
super(mHandler);
this.mContext = mContext;
this.mHandler = mHandler;
}
@Override
public void onChange(boolean selfChange, Uri uri) {
super.onChange(selfChange, uri);
Log.e("DEBUG","SMS has changed");
Log.e("DEBUG",uri.toString());
if(uri.toString().equals("content://sms//raw")){
return;
}
Uri inboUri=uri.parse("content://sms/inbox");
Cursor c=mContext.getContentResolver().query(inboUri, null,
null, null, "date desc");//按照日期倒序排列
if(c!=null){
if(c.moveToNext()){
String address=c.getString(c.getColumnIndex("address"));
String body=c.getString(c.getColumnIndex("body"));
Log.e("DEBUG","发件人为:"+address+"短信内容为:"+body);
Pattern p=Pattern.compile("\\d{6}");//匹配第一次出现的四位数字
Matcher m=p.matcher(body);
if(m.find()){
String code=m.group(0);
Log.e("DEBUG","验证码"+code);
mHandler.obtainMessage(MainActivity.MSG_RECEIVE_CODE,code).sendToTarget();
}
}
c.close();
}
}
}
Uri uri=Uri.parse("content://sms");
getContentResolver().registerContentObserver
(uri, true, observer);
protected void onPause() {
super.onPause();
getContentResolver().unregisterContentObserver(observer);
}
@Override
public void handleMessage(Message msg) {
if(msg.what==MSG_RECEIVE_CODE){
String code=(String)msg.obj;
//更新UI
Toast.makeText(MainActivity.this, code+"66666666",Toast.LENGTH_SHORT).show();
}
}
};
- ContentObserver——内容观察者
- ContentObserver——内容观察者
- android中ContentObserver——内容观察者
- Android 内容观察者—ContentObserver类详解
- Android内容观察者--ContentObserver
- ContentObserver内容观察者
- ContentObserver 内容观察者
- Android -- ContentObserver 内容观察者
- ContentObserver(内容观察者)
- Android 中的内容观察者ContentObserver
- android下内容观察者: ContentObserver
- Android 中的内容观察者ContentObserver
- 内容观察者(ContentObserver)的使用~
- ContentObserver内容监听者(内容观察者)
- ContentObserver内容监听者(内容观察者)
- Android中内容观察者的使用---- ContentObserver
- android之ContentObserver内容观察者的使用
- Android自学笔记-13-ContentObserver内容观察者
- UML之构件图(Component Diagram)
- android如何让service不被杀死
- Css3基本用法
- 解决使用github中,拒绝上传代码问题
- 谷俊丽分享之基于深度学习的大数据挖掘
- ContentObserver——内容观察者
- 集成骨骼动画Spine的几点经验
- no comapny
- Oracle数据库 常见的SQL题,复习
- 排序算法复杂度
- vector中erase函数
- 买了个vps搭vpn但前提是要有操作系统,那么vps能不能自己安装系统?怎么安装?
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
- 黑马程序员-----java基础(泛型,集合工具类)