• Android--Content Provider


    1、内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访数据的安全性。

    2、内容提供器的用法一般有两种,一种是使用现有的内容提供器来读取和操作相应程序中的数据,另一种是创建自己的内容提供器给程序的数据提供外部访问接口。

    3、ContentResolver 类用于读取其他应用程序的共享数据:

      1)借助 ContentResolver 类可以访问内容提供器中共享的数据,该类的对象可以通过 Context 的 getContentResolver() 来获取;

      2)ContentResolver 中提供了一系列的方法用于对数据进行CRUD 操作:

        --insert() 方法用于添加数据;

        --update()方法用于更新数据;

        --delete()方法用于删除数据;

        --query()方法用于查询数据;

        --不同于 SQLiteDatabase 中的上述方法, ContentReslover的这些方法使用一个 Uri 参数,这个参数被称为内容 Uri;

        --内容 Uri 给内容提供器中的数据建立了唯一标识,它主要由两部分组成:权限(authority)和路径(path),权限用于对不同的应用程序做区分,为了避免冲突,采用程序包名的方式进行命名;路径是是用于同一程序中不同的表做区分的,通常添加到权限后面;

        --内容 Uri 的标准格式写法:content://com.example.app.provider/table1

    4、使用 ContentProvider 为程序创建内容提供器:

      1)可以通过新建一个类去继承 ContentProvider 的方式来创建一个自己的内容提供器;

      2)需要重写6个抽象方法:

        -- onCreate(): 初始化内容提供器的时候调用。通常用于对数据库的创建和升级等操作,返回true表示初始化成功,false表示初始化失败;只有当 ContentResolver 访问数据时,内容提供器才会被初始化;

        -- query(): 查询数据;

        -- insert(): 插入数据;

        -- update(): 更新数据;

        -- delete(): 删除数据;

        -- getType(Uri uri): 根据传入的 uri 返回相应的 MIME 类型,一个内容URI 所对应的MIME字符串主要由三部分组成:

          ①必须以vnd 开头;

          ②如果内容URI 以路径结尾,则后接android.cursor.dir/,如果内容URI 以id 结尾,则后接android.cursor.item/;

          ③最后接上vnd.<authority>.<path>。

      3)在配置文件中注册内容提供器:

    <provider android:name=".DatabaseProvider" android:authorities="com.tt.sqlitedemo.provider" android:exported="true"/>

      注:这里如果没有将 android:exported 属性设置为 true, 则程序运行时会报 java.lang.SecurityException 异常;这点书中没有提到,当时自己敲代码的时候程序总是崩溃,一调试才发现了这个异常;

  • 相关阅读:
    联赛模拟测试19
    联考Day5
    联赛模拟测试18(A.施工未补)
    题解 CF960G 【Bandit Blues】
    题解 P5518 【[MtOI2019]幽灵乐团 / 莫比乌斯反演基础练习题】
    概率与数学期望笔记
    题解 P3704 【[SDOI2017]数字表格】
    主定理
    【题解】Hikari与组合数
    【题解】P2303 [SDOI2012] Longge 的问题
  • 原文地址:https://www.cnblogs.com/tengtao93/p/5277307.html
Copyright © 2020-2023  润新知