一、ContentProvider简介
-
实现了在不同应用程序之间共享数据的需求;
-
避免了不同应用程序之间不同的数据记录方式的差别;
-
四大组件之一;
-
无论应用程序是否启动,其它应用程序都可以通过接口来操作该应用程序的内部数据,包括增加数据、删除数据、修改数据、查询数据等;
-
一般来说ContentProvider是单例模式的,当多个应用程序通过ContentResolver操作ContentProvider的数据时,ContentResolver调用的数据将会委托给同一个ContentProvider处理;
二、开发ContentProvider的步骤
-
开发一个ContentProvider子类,该子类需要实现query(),insert(),update()和delete()方法;
-
public boolean onCreate():在ContentProvider创建后会被调用,当其它应用程序第一次访问ContentProvider的时候,该ContentProvider会被创建出来;
-
public Uri insert(Uri uri,ContentValues values):根据Uri插入vlues对应的数据;
-
public int delete(Uri uri,String selection,String[] selectionArgs):根据Uri删除select条件所匹配的全记录;
-
public int update(Uri uri,ContentValues values,String selection,String[] selectionArgs):根据Uri修改的select条件所匹配的全部记录;
-
public Cursor query(Uri uri,String[] projection,String selection,String[] selectionArgs,String sortOrder):根据Uri查询出select条件所匹配的全部记录;
-
public String getType(Uri uri):返回当前Uri所代表的MIME类型;
-
如果Uri对应的数据包含多条记录,则MIME类型字符串应该是以vnd.android.coursor.dir/开头;
-
如果Uri对应的数据只包含一条记录,那么返回的MIME数据类型应该以vnd.anroid.cursor.item/开头;
-
-
-
在AndroidMainfest.xml文件注册该ContentProvider,指定android:authourities属性;