1.回顾
上篇 数据存储篇 已经学习完了,Android的数据存储 包括 SharedPrefence , SQLite , 文件存储 ,Content Provider ; 而还有一种 是存储在网络上 就不说了;
之前 写了一个 调用 通信录 ,获得 用户联系人的 例子 ,使用 Content Provider 实现;
2. 重点
(1)复习 Content Provider
(2)Content Provider 实现 权限 解释
(3)调用演示实例
3. 复习
(1)ContentProvider 实现 通过 Uri 实现 对 数据的增删改查;
(2)可以跨应用 调用数据;
(3)ContentProvider 通过ContentResolver 实现 增删改查,两个类对应的 方法包括参数一模一样;
(4)ContentProvider 在 生成数据App端封装,后在 Androidmianfest.xml 中注册(包括权限设置);
(5)ContentResolver 在 请求数据的App中封装,后通过 生成数据App端提供的Uri地址 实现 增删改查数据操作;
4. ContentProvider 权限解释
声明:AppProvider:代表 生成数据App端 (数据提供端);AppResovler:代表 请求数据 App端
4.1 权限解释
<providerandroid:name="com.example.sqlite.TContentProvider"android:authorities="com.example.sqlite"android:exported="true"/> (1)在 Androidmianfest.xml 文件下的 的 Application 标签中添加 provider 标签
<Application….>….<provider …… /></Application> (2)一般情况下,包含必须的三个属性
name : 为 自定义 ContentProvider 类 的包名(在AppProvider 应用中 ,继承 ContentProvider)
authorities :为 这个 ContentProvider 的 uri 地址 ;
exported : 为 是否可以其他应用所访问,默认不写为 false , true 是可以访问;
有这三个 就已经可以实现 数据共享了 ;
4.2 权限提升
前三个属性 和上面一样,下面是 又多的三个属性 <providerandroid:name="com.example.sqlite.TContentProvider"android:authorities="com.example.sqlite"android:exported="true"android:permission="com.example.sqlitedemo"android:readPermission="com.example.sqlite.read"android:writePermission="com.example.sqlite.write"/>
4.2.1 permission
给应用 注册 和 提供访问的读写权限 ;
(1)AppProvider应用 声明权限 在与 Application 的同级标签下声明:
这里的 name值 和 上面permission 值一样!!
<permissionandroid:name="com.example.sqlitedemo"android:label="content provider read"android:protectionLevel="normal"></permission>
( 2)AppResovler 应用 实现数据请求 ,必须在 自己的 Androidmianfest.xml文件中,声明:
这里的 name 也和 permission 值一样 !!!和 Application 标签同级 ;
<uses-permission android:name="com.example.sqlitedemo"/>
4.2.2 readPermission 和 writePermission
(1)Permission可以同时实现 读写权限 ;
(2)readPermission 只实现 读 权限 ,没有写入权限;
(3)writePermission 只实现 写入权限 ,没有实现 读取权限;
天下无难事,只怕有心人。