1、基本概念
内容提供器的主要作用在于跨应用程序的数据共享,例如共享通讯录里的数据
android 6.0 引入了运行时权限功能,对于危险权限需要通过动态申请的方式获取,否则默认失败
内容提供器有两种:1、使用现有的内容提供器来获取别的程序中的数据;2、创建自己的内容提供器供别人访问
通过 ContentResolver 类来实现,其实例的 insert , update , delete , query 方法实现增删改查,方法参数为 内容URI
内容URI,由 authority 和 path 两部分组成,如 content:// com.example.app.provider/table,com.example.app.provider为authority,path为table
2、基本用法
1、创建一个 URI
Uri uri = Uri.parse("content:// com.example.app.provider/table")
2、获取 ContentResolver 实例
Cursor cursor = getContentResolver().query(
uri, // 对应 from table
projection, // 对应 select column1
selection, // 对应 where column=value
selectionArgs,
srotOrder // 对应 order by column
)
3、通过 cursor 获取具体内容
if(cursor!=null){
while(cursor.moveToNext()){
String column = cursor.getString(cursor.getColumnIndex("column"));
Int column2 = cursor.getInt(cursor.getColumnIndex("column2"))
}
cursor.close();
}
4、插入、修改、删除操作
// 1、插入
ContentValues values = new ContentValues();
values.put("column1","text");
values.put("column2",1);
getContentResolver().insert(uri,values)
// 2、修改
ContentValues values = new ContentValues();
values.put("column1","");
getContentResolver().update(uri,values,"column1 = ? and column2 = ?",new String[]{"text","1"})
// 3、删除
getContentResolver().delete(uri,"column2 = ?",new String[]{"1"});