内容提供者-Content Provider
来源:互联网 发布:shopee123软件怎么样 编辑:程序博客网 时间:2024/04/30 08:33
作用: 主要用于在不同程序之间实现数据共享的功能
ContentResolver的使用:
借助ContentResolver类便可以实现访问内容提供者中共享的数据
创建实例:Context.getContentResolver()
- insert()://用于添加数据
- delete()://用于删除数据
- query()://用于查询数据
- update()://用于更新数据
Uri对象
它由两部分组成:权限(authority)+路径(path)
标准格式:content://com.sendi.app.provider/table1
得到uri字符串之后,我们还需将它解析成Uri对象:
Uri.parse(“content://com.sendi.app.provider/table1”);
Uri规则:
content://com.sendi.app.provider/table1/1 :表示访问com.sendi.app这个应用下table表中id为1的数据
“*” :匹配任意长度的任意字符
“#”:匹配任意长度的任意数字
增删改查
- 查询:
Cursor cursor=getContentResolver().query(
uri,
列名,
条件,
where中指定占位符的值,
排序方式);
while(cursor.moveToNext()){
String col1=cursor.getString(cursor.getColumnIndex(“列值1”));
String col2=cursor.getString(cursor.getColumnIndex(“列值2”));
}
cursor.cloase();
添加:
ContentValues values=new ContentValues();
values.put(“c1”,”value1”);
values.put(“c2”,”value2”);
getContentResolver().insert(uri,values);更新:
ContentValues values=new ContentValues();
values.put(“c1”,”value1”);
getCOntentResolver().update(uri,values,”c1=? and c2=?”,new String[]{“text”,”1”});删除:
getContentResolver().delete(uri,”c2=?”,new String[]{“v2”});
自定义内容提供者
- 继承ContentProvider
- 实现方法:onCreate、query、insert、update、delete、getType
- onCreate:内容提供者初始化成功返回true,否则返回false
- query:查询
- insert:插入
- update:更新
- delete:删除
- getType:根据传入的Uri返回相应的类型
注意
需要在清单中注册内容提供者
<provider android:name="com.sendi.test.MyProvider" android:authorities="com.sendi.test.provider" android:exported="true"></provider>
最后附上获取手机联系人代码
private List<ContactBook> initContactList(List<ContactBook>contactList){ ContentResolver cr=mActivity.getContentResolver(); Cursor cursorContactId=cr.query(Uri.parse("content://com.android.contacts/raw_contacts"),new String[]{"contact_id"},null,null,null); while (cursorContactId.moveToNext()){ List<String>list=new ArrayList<>(); String contactId=cursorContactId.getString(0); Cursor cursorData=cr.query(Uri.parse("content://com.android.contacts/data"),new String[]{"data1","mimetype"}, "raw_contact_id=?",new String[]{contactId},null); while (cursorData.moveToNext()){ String data=cursorData.getString(0); list.add(data); Log.i("TEST", "click: "+data); } contactList.add(new ContactBook(list.get(1),list.get(0))); } cursorContactId.close(); return contactList; }
记得在清单文件添加权限
<uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.WRITE_CONTACTS"/> <uses-permission android:name="android.permission.CALL_PHONE"/>
- content Provider 内容提供者
- Content Provider内容提供者
- Content Provider 内容提供者
- 内容提供者-Content Provider
- Android内容提供者(Content provider)
- Android Content Provider(内容提供者)
- 内容提供者-Content Provider
- 内容提供者 Content Provider - 基本知识
- 内容提供者 Content Provider - 创建
- 【Android 开发】:Content Provider (内容提供者) 详解
- Android开发--内容提供者(Content provider)
- 内容提供者—Content Provider(一)
- 内容提供者—Content Provider(二)
- Android内容提供者(Content provider)
- Android内容提供者(Content provider)
- Android 内容提供者(Content provider)
- android开发 - Content Provider 内容提供者
- Android内容提供者(Content provider)
- 利用python进行微信好友分析
- stored-program Computer/von Neumann Architecture 冯诺依曼体系结构
- python学习中遇到的问题整理
- Java文件创建删除复制读写以及查找盘符文件操作
- CString 变 char
- 内容提供者-Content Provider
- SpringCloud第七篇-Spring Cloud Config
- javaScript 高级程序设计学习(二)
- 实验2 Linux用户管理
- 【常用工具】自己的百度云分享,不定期增加工具
- XML学习06-Java中Dom4J方式解析XML文件
- 类 手机
- 机器学习简介
- 选课-二叉1