ContentProvider简介

内容提供者(ContentProvider)

数据库文件一般是私有的(-rw-rw----),其他应用程序无法访问该程序私有的数据库。

目的:保证应用程序数据库的安全,每个应用程序都是独立的,不可以操作另外一个应用程序数据库的数据。

有一些特殊的需求,需要把自己私有的数据库暴露给别的应用程序,让别的应用程序访问。

内容提供者ContentProvider就是做这件事情的。

内容提供者ContentProvider创建的步骤

  • MyContentProvider extends ContentProvider

  • 在清单文件配置内容提供者(节点为provider,其中name属性要写ContentProvider的包名与类名,authorities属性意为主机名,可以随便写,不过最好顾名思义。)配置完整类路径、主机名。

    android:authorities="com.example.db.persondb"
    android:name="com.example.test_contentprovider.MyContentProvider">

  • MyContentProvider定义一些数据操作的URI,利用UriMatcher指定一些特殊的路径

    //content://com.example.db.persondb/query 查询
    //content://com.example.db.persondb/insert 添加
    //content://com.example.db.persondb/update 修改
    //content://com.example.db.persondb/delete 删除

  • 实现MyContentProvider 的增删改查的方法(根据业务需求去实现)
    实现了query方法。

  1. 检查uri路径是否正确
  2. 如果正确则return一个Cursor
  3. 如果不正确抛出一个异常

如何使用ContentProvider查询数据

  1. 获取ContentProvider的解析器ContentResolver
    ContentResolver resolver = getContentResolver();
  2. 调用resolver的增删改查方法

    ---恢复内容结束---

原文地址:https://www.cnblogs.com/clevergirl/p/5667847.html