一、ContentProvider用处:
1、想在自己的程序中使用其他程序的数据 ,比如使用系统通过ContentProvider暴露给我们程序的数据(联系人、短信等)
2、将自己的程序的数据暴露出去,以供其他程序操作使用。可以通过ContentProvider指定所要所要暴露的数据,从而避免了数据的泄露
二、ContentProvider简单使用原理:
通过自己的APP实现ContentProvider类,然后注册一个Uri,然后其他程序就可以通过ContentResolver类操作我们自己APP中的数据了。

三、Uri:统一资源标识符(应用程序中每一种资源的名字)
ContentProvider为数据定义一个Uri,提供统一的操作接口,其他程序可以通过此Uri访问指定的数据进行增、删、改、查。之后其它应用程序对数据进行查询或修改时,只要获得一个ContentResolver对象传入相应的Uri,根据Uri访问操作指定数据即可。

四、ContentProvider的使用
1、自定义ContentProvider
2、使用系统提供的ContentProvider
五、自定义ContentProvider
1、自定义ContentProvider实现过程
①、通过SQLiteOpenHelper类创建一个SQL数据库
②、自定义ContentProvider类,并实现里面的方法(insert、delete等)
③、定义一个Uri类型的常量,为其指定一个唯一的字符串值,可供ContentResolver访问ContentProvider的标识符。
④、在清单文件AndroidManifest.xml中注册声明
<provider
android:name=“cn.itcast.db.PersonDBProvider”
android:authorities=“cn.itcast.db.personprovider”
android:exported="true">
</provider>
<!--属性依次为:全限定类名,用于匹配的URI,是否共享数据 --
2、ContentProvider类中的主要方法:

①、public boolean onCreate()
该方法在ContentProvider创建后就会被调用,其它应用程序第一次访问ContentProvider时,该ContentProvider会被创建出来,并立即回调该方法。
②、public Uri insert(Uri uri, ContentValues values)
根据该uri插入values对应的数据。
③、public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
该方法根据Uri查询select条件所匹配的全部记录。
projection:要查询的列名
selection:where子句的内容
selectionArgs: selection中占位符所对应的参数
sortOrder:排序
④、public int delete(Uri uri, String selection, String[] selectionArgs)
该方法根据Uri删除where条件匹配的所有记录。
⑤、public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)
该方法根据Uri修改where条件匹配的全部记录。
⑥、public String getType(Uri uri)
该方法用于返回当前Uri所代表数据的MIME类型。
插曲:MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。 MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。
假设一个provider有人员表,该provider的authority是cn.itcast.provider.personprovider。包含一个表:person。
例如:要得到Uri为content://cn.itcast.provider.personprovider/person指向表person,代表所有person记录,那么provider对应的MIME类型字符串应该为:“vnd.android.cursor.dir/person”。
例如:得到id为10的person记录,Uri为content://cn.itcast.provider.personprovider/person/10,那么返回的MIME类型字符串应该为:“vnd.android.cursor.item/person”。
本文介绍Android中ContentProvider的用途及原理,包括如何自定义ContentProvider并实现数据的增删改查。通过实例演示如何创建SQL数据库,定义Uri,以及实现ContentProvider的方法。
1万+

被折叠的 条评论
为什么被折叠?



