《第一行代码--Android》读书笔记之内容提供器

内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据的共享功能,是android的四大组件之一。内容提供器的用法一般有两种,一种是使用向右的内容提供器来读取和操作相应程序中的数据;另一种是创建自己的内容提供其给自己程序要共享出去的数据提供外部访问接口。

  • 访问其他应用程序中的数据
    • 通过Context中的getContentResolver()方法得到ContentResolver对象。Resolver意思是分解器,溶剂,把内容提供器提供的一块数据分析溶解,呵呵,我的理解。ContentResolver提供了一系列对数据进行CRUD操作。
    • URI给内容提供器中的数据建立了唯一的标识符,需要作为传入CRUD的操作方法里。URI由两部分组成,”content://权限+路径”。权限是”包名.provide”。如果有子表,在provider后面加上”/table”。
      Public static final Uri CONTENT_URI = Uri.parse(“content://com.WangWeiDa.MyContentProvider/users”);
    • 调用具体的CRUD操作方法就可以了。
Cursor cursor=null;
        try {
            cursor=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null);
            while(cursor.moveToNext()){
                String name=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                String number=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                contactList.add(name+"\n"+number);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if(cursor!=null)
                cursor.close();
        }
  • 创建自己的内容提供器
    • 自定义一个provider类继承自ContentProvider。重写实现ContentProvider的所有方法(query、insert、update、delete、getType、onCreate);
    • URI格式主要有两种,以路径结尾就表示期望访问该表的中的所有数据;以id结尾就表示期望访问该表中拥有相应id的数据。我们可以利用UriMatcher对象的addURI()和match()来匹配URI。
    • 在getType()方法中返回Uri对象对应的MIME类型。MIME格式
      1、以vnd开头
      2、如果uri以路径结尾,则后接android.cursor.dir/;如果以id结尾,则后接android.cursor.item/。
      3、最后接上vnd.< authority>.< path>。
      “vnd.android.cursor.dir/vnd.com.example.databasetest.provider.book”;
    • android中四大组件都是要在AndroidManifest中注册,ContentProvider也不例外。需要在android:name属性中制定该自定义Provider类的全名,在android:authroities属性中指定该内容提供器权限。另外,我实践过这样写还是不能让外部程序访问到我们的ContentProvider,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值