Android笔记之ContentProvider

使用场景

  • 存储和读取数据提供了统一的接口
  • 应用程序实现数据共享

操作方式都是通过Uri来实现的

Uri的组成部分:

  • 第一部分是"content://"
  • 第二部分是主机名或authority,用于唯一标识这个ContentProvider。
  • 第三部分是路径名,用来表示将要操作的数据。
    如:[content://][contacts][/person/10]

常用工具

  • UriMatcher
    用来匹配Uri的信息,默认UriMatcher.NO_MATCH
    增加需要匹配的Uri
void addURI(String authority, String path, int code)
  • path 匹配的路径
    /xxx 匹配目录
    /xxx/# 匹配Id(数字)
    /xxx/* 匹配Id(文本)
    其他值的为精确匹配

  • code 匹配的类型

  • ContentUris
    用来操作Uri
    生成带Id的uri

public static Uri withAppendedId(Uri contentUri, long id)

从Uri中读取id

public static long parseId(Uri contentUri)

创建Provider

继承ContentProvider根据需要覆写其方法

  • onCreate
    初始化
  • getType
    根绝Uri来返回处理类型
    vnd.android.cursor.dir/xxx 多条数据
    vnd.android.cursor.item/xxx 单条数据
  • insert
  • delete
  • update
  • query

声明

在AndroidManifest.xml中注册组件

  • name 组件类
  • authorities 指明“主机名”
  • exported 如果共享数据还需要设置暴露

使用Provider

获取ContentResolver

Context.getContentResolver

ContentResolver支持增删改查

  • 新增数据
Uri insert(Uri url,ContentValues values) 
 int bulkInsert(Uri url,ContentValues[] values)
  • 删除数据
int delete(Uri url, String where,String[] selectionArgs)
  • 修改数据
 int update(Uri uri,ContentValues values,String where, String[] selectionArgs)
  • 查询数据
Cursor query(Uri uri,String[] projection,String selection,String[] selectionArgs, String sortOrder)

你可能感兴趣的:(Android笔记之ContentProvider)