ContentObserver is used in ContentService

ObserverNode is a capsulation of ObserverEntry to provide addObserverLocked method and so on.

./frameworks/base/core/java/android/content/ContentService.java calls registerContentObserver method to register uri and responding observer.

during this registering, a ObserverNode instance would be created, so, a ObserverEntry would be created as a observer list.

./frameworks/base/services/java/com/android/server/SystemServer.java initializes ContentService via ContentService.main.


Here is a example for using ContentObserver.
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=9162&page=1

最近有个朋友问了我如何接受指定号码的短信,并且不让系统截取到通知用户。真好前端时间看天朝group,也有个朋友问了这个问题,而且通过ContentObserver方式解决了,我这里就把我实现的代码贴出来,以便需要的朋友参考。

1. public class ScreenTest extends Activity {
2.
3. class SmsContent extends ContentObserver{
4. private Cursor cursor = null;
5. public SmsContent(Handler handler) {
6. super(handler);
7. }
8.
9. /**
10. * @Description 当短信表发送改变时,调用该方法
11. * 需要两种权限
12. * android.permission.READ_SMS读取短信
13. * android.permission.WRITE_SMS写短信
14. * @Author Snake
15. * @Date 2010-1-12
16. */
17. @Override
18. public void onChange(boolean selfChange) {
19. // TODO Auto-generated method stub
20. super.onChange(selfChange);
21. //读取收件箱中指定号码的短信
22. cursor = managedQuery(Uri.parse("content://sms/inbox"),
new String[]{"_id", "address", "read"},
" address=? and read=?",
new String[]{"12345678901", "0"},
"date desc");
23.
24. if (cursor != null){
25. ContentValues values = new ContentValues();
26. values.put("read", "1"); //修改短信为已读模式
27. cursor.moveToFirst();
28. while (cursor.isLast()){
29. //更新当前未读短信状态为已读
30. getContentResolver().update(Uri.parse("content://sms/inbox"),
values,
" _id=?",
new String[]{""+cursor.getInt(0)});
31. cursor.moveToNext();
32. }
33. }
34. }
35. }
36.
37. /** Called when the activity is first created. */
38. @Override
39. public void onCreate(Bundle savedInstanceState) {
40. super.onCreate(savedInstanceState);
41. setContentView(R.layout.main);
42. SmsContent content = new SmsContent(new Handler());
43. //注册短信变化监听
44. this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, content);
45. }
46. }

更多相关文章

  1. Android短信----接收流程---框架层(Frameworks)
  2. android 中调用接口发送短信
  3. Android中短信的收发机制 发送短信 接收短信 拦截短信 监听短信
  4. 【Android】Android6.0发送短信Demo
  5. WCF 实例 —— Android(安卓)短信助手 (WCF + Android) (2)
  6. 做好准备,让你的短信应用迎接Android(安卓)4.4(KitKat)
  7. android发送与接收超长短信
  8. 我的android 第二天 - 短信发送器
  9. -Android各版本系统源代码下载

随机推荐

  1. 关于Handler的理解
  2. 当expandlistview的getGroupView或者getC
  3. Android实现垂直型的SeekBar
  4. Android常用基本界面元素汇总
  5. Android的WebView简单使用实例(附Demo)
  6. Android的数字选择器NumberPicker-androi
  7. 深入Android【一】—— 序及开篇
  8. 你想加入IT高薪就业的队伍吗?还在犹豫什么
  9. Android 屏幕元素层次结构
  10. MDCC印象之三:Android热的背后