美文网首页
Android笔记之ContentProvider

Android笔记之ContentProvider

作者: 卖梦想的男孩 | 来源:发表于2017-03-03 16:18 被阅读3次

    使用场景

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

    操作方式都是通过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中注册<provider/>组件

    • 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

          本文链接:https://www.haomeiwen.com/subject/yhlxgttx.html