Content Provider内容提供者

Content Provider内容提供者 :

android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。这些数据可以存储在文件系统中、在一个SQLite数据库、或以任何其他合理的方式

其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据.

只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中

它的好处:统一数据访问方式。

 

1>继承ContentProvider类并根据需求重写以下方法: 

public boolean onCreate();//处理初始化操作

 

       /**

        * 插入数据到内容提供者(允许其他应用向你的应用中插入数据时重写)

        * @param uri

        * @param initialValues 插入的数据

        * @return

        */

       public Uri insert(Uri uri, ContentValues initialValues);

 

       /**

        * 从内容提供者中删除数据(允许其他应用删除你应用的数据时重写)

        * @param uri

        * @param selection 条件语句

        * @param selectionArgs 参数

        * @return

        */

       public int delete(Uri uri, String selection, String[] selectionArgs);

 

       /**

        * 更新内容提供者已存在的数据(允许其他应用更新你应用的数据时重写)

        * @param uri

        * @param values 更新的数据

        * @param selection 条件语句

        * @param selectionArgs 参数

        * @return

        */

       public int update(Uri uri, ContentValues values, String selection,

                     String[] selectionArgs);

 

       /**

        * 返回数据给调用者(允许其他应用从你的应用中获取数据时重写)

        * @param uri

        * @param projection 列名

        * @param selection 条件语句

        * @param selectionArgs 参数

        * @param sortOrder 排序

        * @return

        */

       public Cursor query(Uri uri, String[] projection, String selection,

                     String[] selectionArgs, String sortOrder) ;         

 

       /**

        * 用于返回当前Uri所代表数据的MIME类型

        * 如果操作的数据为集合类型(多条数据),那么返回的类型字符串应该为vnd.android.cursor.dir/开头

        * 例如要得到所有person记录的Uri为content://com.bravestarr.provider.personprovider/person,
     *   那么返回的MIME类型字符串应该为"vnd.android.cursor.dir/person"

        * 如果操作的数据为单一数据,那么返回的类型字符串应该为vnd.android.cursor.item/开头

        * 例如要得到id为10的person记录的Uri为content://com.bravestarr.provider.personprovider/person/10,
     *   那么返回的MIME类型字符串应该为"vnd.android.cursor.item/person"

        * @param uri

        */

       public String getType(Uri uri)

 

2>AndroidManifest.xml中使用<provider>ContentProvider进行配置注册(内容提供者注册它自己就像网站注册域名),ContentProvider采用authoritie(原意授权,可理解为域名)作为唯一标识,方便其他应用能找到 

 

<application

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name" >

        <!-- authorities属性命名建议:公司名.provider.SomeProvider-->

        <provider android:name=".PersonProvider" android:authorities="com.bravestarr.provider.personprovider"/>

         ...

</application>

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值