Android四大组件之ContentProvider
2017-03-29 21:25
393 查看
ContentProvider适用场景:
1) ContentProvider为存储和读取数据提供了统一的接口。
2) 使用ContentProvider,应用程序可以实现数据共享。
3) android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,通讯录等)。
如何实现ContentProvider?
1.继承抽象类ContentProvider实现一系列针对于数据的增、删、改、查等方法;
2.需要在AndroidMainfest.xml中完成对ContentProvider的注册。
何为Uri?
Uri是指通用资源标识符
content://com.example.provider/music/#
第一段:前缀表明数据受控于一个内容提供者。它从不修改,也就是schema
第二段:是指在AndroidMainfest.xml中我们注册的Provider中的android:authorities属性所对应的
第三段:具体操作于哪个条目
第四段:具体指定到哪个条目下的哪条记录(#表示通配符)
ContentResolver:
使用ContentResolver操作ContentProvider中的数据:
1.当外部应用需要对ContentProvider中的数据进行添加、删除、修改和查询操作时,可以使用ContentResolver类来完成
2.使用Activity提供的getContentResolver()方法获取ContentResolver对象
3.ContentResolver类提供了与ContentProvider类相同签名的四个方法
看下列代码展示:
ContentResolver cr=getContentResolver();
Cursor c=cr.query(Contacts.CONTENT_URI, new String[]{Contacts._ID,Contacts.DISPLAY_NAME}, null,null, null);
if(c!=null)
{
while(c.moveToNext())
{
int id=c.getInt(c.getColumnIndex("_id"));
Log.i("info", "_id:"+id);
Log.i("info", "name:"+c.getString(c.getColumnIndex("display_name")));
Cursor c1=cr.query(Phone.CONTENT_URI, new String[]{Phone.NUMBER,Phone.TYPE}, Phone.CONTACT_ID+"="+id, null, null);
//根据联系人ID查询出联系人的电话号码
if(c1!=null)
{
while(c1.moveToNext())
{
int type=c1.getInt(c1.getColumnIndex(Phone.TYPE));
if(type==Phone.TYPE_HOME)
{
Log.i("info", "家庭电话:"+c1.getString(c1.getColumnIndex(Phone.NUMBER)));
}
else {
Log.i("info", "手机:"+c1.getString(c1.getColumnIndex(Phone.NUMBER)));
}
}
c1.close();
}
//根据联系人的ID去查询出联系人的邮箱
Cursor c2=cr.query(Email.CONTENT_URI, new String[]{Email.DATA,Email.TYPE}, Email.CONTACT_ID+"="+id, null, null);
if (c2!=null) {
while (c2.moveToNext()) {
int type=c2.getInt(c2.getColumnIndex(Email.TYPE));
if (type==Email.TYPE_WORK) {
Log.i("info", "工作邮箱:"+c2.getString(c2.getColumnIndex(Email.DATA)));
}
}
c2.close();
}
}
c.close();
}
需要注意的地方都用红色标记出来了。
还有一个注意的地方就是设置访问权限:
自己先在通讯录里创建两个联系人:如Jim和张三
运行结果如下:
相关文章推荐
- Android 四大组件学习之ContentProvider四
- Android 四大组件之" ContentProvider "
- Android四大组件 Activity BroadCast ContentProvider Service 的理解
- Android 四大组件学习之ContentProvider四
- Android_03--四大组件_Activity+BroadcastReceiver+service+ContentProvider
- Android四大组件学习之ContentProvider
- 四大组件之ContentProvider
- Android四大组件之ContentResolver
- Android四大组件之ConentProvider.
- android应用程序四大组件
- Android应用程序四大组件之Activity(二)
- Android应用程序四大组件
- android 系统之ContentProvider
- android 系统之ContentProvider
- Android Custom ContentProvider Demo
- Android四大组件
- Android四大组件之Content Provider
- android四大组件之intent
- Android应用程序四大组件之Service(一)
- Android四大组件