Android学习笔记【09】【四大组件之内容提供者】
一、内容提供者(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通知发生改变
九、内容观察者应用场景
浙公网安备 33010602011771号