一、内容提供者概述
二、创建内容提供者
三、访问其他应用程序
1、查询其他程序的数据
//获取相应操作的Uri,Uri.parse()方法是将字符串转化成Uri对象。 Uri uri = Uri.parse("content://cn.itcast.mycontentprovider/person"); //获取ContentResolver对象 ContentResolver resolver = context.getContentResolver(); //通过ContentResolver对象查询数据 Cursor cursor = resolver.query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder); while (cursor.moveToNext()) { String address = cursor.getString(0); long date = cursor.getLong(1); int type = cursor.getInt(2); } cursor.close();
2 、查询系统短信
四、内容观察者
1、什么是内容观察者
//创建内容观察者 private class MyObserver extends ContentObserver{ public MyObserver(Handler handler) { super(handler); } //当观察到Uri代表的数据发生变化时调用此方法,程序会回调onChange()方法, //并在该方法中处理相关逻辑 public void onChange(boolean selfChange) { super.onChange(selfChange); } }
ContentResolver resolver = getContentResolver(); Uri uri = Uri.parse("content://aaa.bbb.ccc"); //注册内容观察者 resolver.registerContentObserver(uri, true, new MyObserver(new Handler()));
@Override protected void onDestroy() { super.onDestroy(); //取消注册内容观察者 getContentResolver().unregisterContentObserver(new MyObserver( new Handler())); }
2、监测数据变化
五、本章小结
本章详细地讲解了内容提供者的相关知识,首先简单地介绍了内容提供者,然后讲解了如何创建内容提供者以及如何使用内容提供者访问其他程序暴露的数据,最后讲解内容观察者,通过内容观察者观察数据的变化。本章所讲的ContentProvider是Android四大组件之一,在后续遇到程序之间需要共享数据时,会经常用到该组件,因此要求初学者一定要熟练掌握本章内容。