一、作用。
提供私有数据供别的APP使用。
1、定义
ContentProvider的子类继承
ContentProvider类。
2、重写相关方法。
其方法有
1)boolean onCreate():一般在里面获得SQLiteDatabase实例,
SQLiteDatabase
db=new DBHelp(getContext()).getWritableDatabase();
2)
Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) :用于书写查询数据的操作。
参数1:uri 参数2:要查找的列 参数4:查找条件 参数5:条件中占位符的值 参数6:排序
3)Uri insert(Uri uri, ContentValues values) :用于书写插入数据的操作。
4)int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) :
用于书写更新数据的操作。
5)
int delete(Uri uri, String selection, String[] selectionArgs):
用于书写删除数据的操作。
6)String
getType(Uri uri):根据传入的uri判断数据的数量,多条数据将type置为:
单条数据将type置为:vnd.android.cursor.item/vnd."+AUTHORITY+"."+DBHelper.TABLE_NAME;
3、在清单注册文件注册:
application
节点内部
---
》
provider
:
name
、
authorities
(域名)、
exported
(是否要暴露数据),也
可设置权限:
读:readpermission-->值字符串A
发布权限:permission节点:name:值:值字符串A
---》application节点的外面
写:writepermission-->值字符串A
发布权限:permission节点:name:值:值字符串A
---》application节点的外面
三、匹配uri
1、获取UriMatcher
对象: UriMatcher matcher=new UriMatcher(UriMatcher.NO_MATCH);
2、添加要匹配的URI,将其写在静态代码块中。
方法:
matcher.addURI(authority,path,code);
参数1:authority
参数2:资源路径:表名
参数3:该uri匹配成功的返回码code
完整路径Uri:
matcher.addURI(AUTHORITY, DBHelper.TABLE_NAME, 1);
模糊匹配:id--->#数值
matcher.addURI(AUTHORITY, DBHelper.TABLE_NAME+"/#", 2);
模糊匹配:name---》*文本
matcher.addURI(AUTHORITY, DBHelper.TABLE_NAME+"/*", 3);
3、拼接uri及获取uri里的参数
ContentUris.withAppendedId(contentUri, Long.parseLong(id))--->ContentUris.parseId()
二、主要步骤。
"vnd.android.cursor.dir/vnd."+AUTHORITY+"."+DBHelper.TABLE_NAME;