Android Application - 应用程序之间数据共享

来源:互联网 发布:制作图文并茂的软件 编辑:程序博客网 时间:2024/06/06 09:05

一般来说一个应用程序只能读取自己所创建的数据库, 如果要提供给另外一个应用程序使用, 那就要使用 ContentProvide, 那另一个程序

 

就可以用 ContentResolver 来取得数据并操作.  以下以一个 book manager 的例子来说明, Content Provider 及 Content Resolver 分别是

 

建在两个不同的 packages, 而 Content Resolver 则可以 URI 来操作 Content Provider 所提供的数据.

 

 

1. Construct Custom Content Provider -

 

首先 create a new project, 使用自动生成的 Activety 即可, 我这边名名为 bookcp.java.

 

 

 

main.xml 也没有变动:

 

 

 

接下来重头戏来了, 创建一个名为 bookprovider 的類别, 使之 extends Content Provider, 且需重载:

 

update(), query(), delete(), insert(), getType()

 

其中 getType 用来判断是操作所有的数据, 或是其中一笔数据.

 

 

 

指定 provider 的路径: proandroid.example.provider.Books(而 package proandroid.exmaple.cp)

 

CONTENT_URI 的路径 content://proandroid.example.provider.Books/books, Content Resolver 就是靠着个路径来取得数据.

 

还有一点很重要的就是: 定义可查询的路径, getType 也用的到.

 

 

 

请参考完整的 bookprovider.java

 

 

 

在 AndroidManifest.xml 声明 Provider 及其路径:

 

 

 

验证数据库生成:

 

 

 

 

 

2. Using Custom Content Provider -

 

使用 Content Resolver 来取得 Content Provider 所提供的数据, 在前一篇: Display Contacts 的例子上已经说明, 唯一需要强调的是

 

Custom provider 的 URI 要如何取得: 

 

 

 

bookmgr.java

 

 

 

 

main.xml

 

 

 

listbook.xml

 

 

 

 

最后 AndroidManifest.xml

 

 

 

新增一笔数据:

 

 

3. Program running snapshot (bookmgr) -