Android配置文件AndroidManifest.xml根目录下有个android:sharedUserId属性,这个属性可以用来实现不同的apk之间数据共享,这里先谈谈用法,再给出一个简单的demo。
通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中.所以默认就是
可以互相访问任意数据. 也可以配置成运行成不同的进程, 同时可以访问其他APK的数据目录下的数据库和文件.就像访问本程序的数据一样.
具体实现就是 :
1. A和B设置成同一个User ID:
*在2个APK的AndroidManifest.xml 配置User ID:<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:sharedUserId="com.fx.qq">
在两个不同的apk中都用相同的android:sharedUserId="com.fx.qq"。
2. 这个设定好之后, APK B就可以像打开本地数据库那样 打开APK A中的数据库了.
APK A把登陆信息存放在A的数据目录下面. APK B每次启动的时候读取APK A下面的数据库
判断是否已经登陆:
APK B中的代码:
friendContext = this.createPackageContext(
"com.android.demo.a1",
Context.CONTEXT_IGNORE_SECURITY);
通过A的package name 就可以得到A的 packagecontext 。通过这个context就可以直接打开数据库
下面是一个例子http://download.csdn.net/detail/langziduxiao/4927394.
例子解释:QQ和QQZone两个APK,再qq中注册账号密码,在QQZone中打开QQ的数据库,读取最新的账号密码显示出来。使用时打开QQ应用,在编辑框输入账号密码,点击checkou注册,然后打开QQZone应用,点击button就会显示最新注册账号密码