文章目录
Android
安卓开发者指南:https://developer.android.google.cn/guide
Android常用四大组件:
1.Activity
2.Service
3.Content provider
4.Broadcast receiver
Android四大组件——ContentProvider
(1)android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据。
(2)只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。它的好处是统一数据访问方式。
(3)ContentProvider实现数据共享。ContentProvider用于保存和获取数据,并使其对所有应用程序可见。这是不同应用程序间共享数据的唯一方式,因为android没有提供所有应用共同访问的公共存储区。
(4)开发人员不会直接使用ContentProvider类的对象,大多数是通过ContentResolver对象实现对ContentProvider的操作。
(5)ContentProvider使用URI来唯一标识其数据集,这里的URI以content://作为前缀,表示该数据由ContentProvider来管理。
来源:https://blog.csdn.net/ican87/article/details/21874321
这部分有个大概了解,之后再补充…
1 简介
为存储和获取数据提供统一的接口。可以在不同的应用程序之间共享数据。对于ContentProvider而言,无论数据的来源是什么,他都认为是种表,然后把数据组织成表格。
2 ContentProvider配置
1.自定义类继承ContentProvider,实现要求的方法;
2.在配置文件中通过provider标签配置,通过android:name属性指定待配置的类,通过android:authorities属性授权,指定当前内容提供者的uri标识,必须唯一。
2.1 ContentResolver类
内容处理者,该类提供了和ContentProvider中同名同参的增、删、改、查的方法,通过URI 采用对应的方法来操作ContentProvider提供的数据。
2.2 ContentProvider类
内容提供者,提供的方法:
创建:boolean onCreate(),可以进行数据库的创建
获取数据类型:String getType(Uri uri)
查询:Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
添加:Uri insert(Uri uri, ContentValues values)
更新:int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)
删除:int delete(Uri uri, String selection, String[] selectionArgs)
3 Uri的使用
URI 的解析
- UriMatcher:在ContentProvider创建时,制定好匹配规则,当调用了ContentProvider中的操作方法时,利用匹配类去匹配传的uri,根据不同的uri给出不同的处理。(UriMatcher还可以使用匹配通配符来匹配任意不确定的值)
- Uri 自带的解析方法
3.1 UriMatcher
制定好匹配规则
UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH); //代表无法匹配
matcher.addURI(“com.lxy.myprovider”,“hellowrld”,1000);
matcher.addURI(“com.lxy.myprovider”,“hellowrld/abc”,1001);
matcher.addURI(“com.lxy.myprovider”,“hellowrld/#”,1002); //任意数字
matcher.addURI(“com.lxy.myprovider”,“hellowrld/*”,1003); //任意字符
消息提供者:
消息处理者:
3.2 Uri自带的方法
消息提供者:
消息处理者:
4 数据读取
访问手机短信,联系人
Cursor可以想象成一张表
4.1 读短消息
只关注想要的列的话:
content://sms 短信箱
content://sms/inbox 收件箱
content://sms/sent 发件箱
content://sms/draft 草稿箱
注意要给权限:< uses-permission android:name=“android.permission.READ_SMS”/>
4.2 读联系人
注意要给权限:< uses-permission android:name=“android.permission.READ_CONTACTS”/>