一、内容提供者(contentProvider)作用
1、创建数据方法:定义一个类继承SQLiteOpenHelper
应用间访问数据库
二、内容提供者原理
内容提供者把数据封装后向外提供,其他应用通过内容解析者访问
三、实现内容提供者步骤
1、定义一个类继承ContentProvider
2、配置清单文件
3、定义UriMatcher
4、定义静态代码块,添加匹配规则
四、备份短信案例
Uri uri = Uri.parse("content://sms/"); Cursor cursor = getContentResolver().query(uri, new String[]{"address", "date", "body"}, null, null, null); XmlSerializer xml = Xml.newSerializer(); File file = new File(getFilesDir().getPath(), "mysms.xml"); FileOutputStream fos = new FileOutputStream(file); xml.setOutput(fos, "utf-8"); xml.startDocument("utf-8", true); xml.startTag(null, "smss"); while (cursor.moveToNext()) { String address = cursor.getString(0); String date = cursor.getString(1); String body = cursor.getString(2); Log.d("mydata", address + "---" + body + "---" + date); xml.startTag(null, "sms"); xml.startTag(null, "address"); xml.text(address); xml.endTag(null, "address"); xml.startTag(null, "body"); xml.text(body); xml.endTag(null, "body"); xml.startTag(null, "date"); xml.text(date); xml.endTag(null, "date"); xml.endTag(null, "sms"); } xml.endTag(null, "smss"); xml.endDocument(); fos.close();
五、利用内容提供者插入短信
六、读取联系人案例
mimetype表<---mimetype_id--->data表<---raw_contact_id-contact_id--->raw_contact表
七、插入联系人
八、内容观察者
Uri uri=Uri.parse("content://sms"); getContentResolver().registerContentObserver(uri,true,new MyContentObserver(new Handler()));
MyContentObserver继承自ContentObserver,重写onChange方法,当观察的内容发生改变的时候执行。
内容观察者,需要内容提供者写notifyChange通知发生改变
九、内容观察者应用场景