Android(java)学习笔记254:ContentProvider使用之内容观察者(观察发出去的短信)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android(java)学习笔记254:ContentProvider使用之内容观察者(观察发出去的短信),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1560字,纯文字阅读大概需要3分钟。
内容图文
![Android(java)学习笔记254:ContentProvider使用之内容观察者(观察发出去的短信)](/upload/InfoBanner/zyjiaocheng/1149/03e014493e274a15afaf3bce0f8483f7.jpg)
1.新建一个案例如下:
2. 不需要添加权限,同时这里布局文件不做修改,来到MainActivity,如下:
1 package com.itheima.sendsmslistener; 2 3 import android.net.Uri; 4 import android.os.Bundle; 5 import android.os.Handler; 6 import android.app.Activity; 7 import android.database.ContentObserver; 8 import android.view.Menu; 9 10 public class MainActivity extends Activity { 1112 @Override 13protectedvoid onCreate(Bundle savedInstanceState) { 14super.onCreate(savedInstanceState); 15 setContentView(R.layout.activity_main); 16 getContentResolver().registerContentObserver(Uri.parse("content://sms"), true, new MyObserver(new Handler())); 17 } 181920privateclass MyObserver extends ContentObserver{ 2122public MyObserver(Handler handler) { 23super(handler); 24 } 2526 @Override 27publicvoid onChange(boolean selfChange) { 28super.onChange(selfChange); 29 System.out.println("短信的数据库变化了。"); 30//查询数据库。31 } 32 } 33 }
3.布署程序到模拟器上,如下:
在系统联系人中添加一个联系人,发送短信给这个联系人,如下:
观察Logcat打印的日志,如下:
09-15 07:42:33.109: I/System.out(644): 短信的数据库变化了。
09-15 07:42:34.739: I/System.out(644): 短信的数据库变化了。
09-15 07:42:35.189: I/System.out(644): 短信的数据库变化了。
我们输入一条短信发送,会打印三条日志,也就是说onChange()方法被调用了3次,也就是说数据库改变了3次,为什么我们输入发送一条短信,数据库改变3次?
答:这是因为,我们发送短信,短信会经过3种状态:" 草稿 " ---> " 发送中 " ---> " 已发送 ";
(1)当我们编辑完短信,短信形成草稿,在数据库中存在标记字段,这个标记字段标记为某个数字或者字符(含义是短信是草稿),这个时候数据库变化,调用一次onChange()方法;
(2)形成草稿的短信 要发送,数据库相应标记字段又要变化(含义短信正在发送),这个时候数据库变化,再次调用一次onChange()方法;
(3)短信发送成功之后,此时短信标记为已发送,这个时候数据库变化,最后一次调用onChange()方法;
这样出现了3次调用onChange()方法
原文:http://www.cnblogs.com/hebao0514/p/4810543.html
内容总结
以上是互联网集市为您收集整理的Android(java)学习笔记254:ContentProvider使用之内容观察者(观察发出去的短信)全部内容,希望文章能够帮你解决Android(java)学习笔记254:ContentProvider使用之内容观察者(观察发出去的短信)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。