数据存储(Content Provider 跨应用调用数据实例)

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 只实现 写入权限 ,没有实现 读取权限;

天下无难事,只怕有心人。

数据存储(Content Provider 跨应用调用数据实例)

相关文章:

你感兴趣的文章:

标签云: