在做apk的过程中,如何实现应用程序之间数据共享的?这个我觉得有点意思呢。
两个应用进程要共享数据,简单的原理就是,A应用程序必须要将自己的数据暴露出来,B应用程序才能获取查看的,ContentResolver与
ContentProvider其实就是基于这个原理的,首先,A程序要新建一个继承ContentProvider的类创建一个内容提供器,将想暴露的数据公开暴
露出来,那B应用程序如何获取A应用程序暴露的数据?Android中提供了ContentResolver,B应用程序就可以通过ContentResolver接口访问
ContentProvider暴露提供的数据。
上面基本的原理中,还有一个关键的词简单介绍一下:URI,这个词有很多意义,在我们这里简单的理解为内容URI,其实就是内容提供器中
数据的唯一标识符,ContentResolver就是是通过URI来查询ContentProvider中提供的数据,当然URI有一个标准的格式,网上就很多介绍,
不详细介绍(其实访问数据库中表的数据,或者其他接口如百度地图,天气等中的数据也类似这个原理,通过URL来访问请求后,解析返回的数
据,不过有的接口返回的是XML,JSON等格式数据,这样就需要解析了),简单的过程就是,B应用程序要查询获取A应用程序中数据,先将内容
URI字符串解析为uri对象后,就可以调用ContentResolver的query()方法来查询数据(也可以添加(insert)、删除(delete)、、修改
(update),当然需要一定的权限才可以),查询的结果是存放在Cursor对象中,对Cursor进行遍历就可以查询到你想要的数据结果。当然在
通过ContentResolver访问数据前,A应用程序必须新建了一个内容提供器(继承ContentProvider),内容提供器根据传入的uri,就能分析B应
用程序要访问的数据。
上面只是我简单的理解,更详细深入还需要多多了解。