ContentProvider在android中的作用是对外共享数据,可以通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider对你应用中的数据进行增删改查。
使用ContentProvider进行数据共享的最大好处是统一了数据的访问方式。
当应用需要通过ContentProvider对外共享数据时,第一步需要继承ContentProvider并重写下面方法:
public class PersonContentProvider extends ContentProvider{
public boolean onCreate()
public Uri insert(Uri uri, ContentValues values)
public int delete(Uri uri, String selection, String[] selectionArgs)
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
public String getType(Uri uri)}
第二步需要在AndroidManifest.xml使用<provider>对该ContentProvider进行配置,为了能让其他应用找到该ContentProvider , ContentProvider 采用了authorities(主机名/域名)对它进行唯一标识,你可以把 ContentProvider看作是一个网站(想想,网站也是提供数据者),authorities 就是他的域名:
<manifest .... >
<application android:icon="@drawable/icon" android:label="@string/app_name">
<provider android:name=".PersonContentProvider" android:authorities="cn.howay.providers.personprovider"/>
</application>
</manifest>
ContentProvider类的主要方法的作用:
public boolean onCreate()----在其它应用第一次访问它时才被创建。
public Uri insert(Uri uri,ContentValues values)---外部应用往ContentProvider中添加数据
public int delete(Uri uri,String selection,String[] selctionArgs)---外部应用从Contentprovider中删除数据
public int update(Uri uri,ContentValues values,String selection,String[] selectionArgs)---外部应用更新Contentprovider中的数据
public Cursor query(Uri uri,String[] projection,String selection,String[] selectionArgs,String sortOrder)---外部应用从Contentprovider中获取数据
public String getType(Uri uri)---返回当前的Uri所代表数据的MIME类型