`
yelinsen05
  • 浏览: 497862 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Android 多个APK共享数据(Shared User ID)

阅读更多
Android给每个APK进程分配一个单独的用户空间,其manifest中的userid就是对应一个Linux 用户
(Android 系统是基于Linux)的.
所以不同APK(用户)间互相访问数据默认是禁止的.
但是它也提供了2种APK间共享数据的形式:
1. Share Preference. / Content Provider
APK可以指定接口和数据给任何其他APK读取. 需要自己实现接口和Share的数据.
本文对于这个不做详细解释

2. Shared User id
通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中.所以默认就是
可以互相访问任意数据. 也可以配置成运行成不同的进程, 同时可以访问其他APK的数据目录下的
数据库和文件.就像访问本程序的数据一样.
比如某个公司开发了多个Android 程序, 那么可以把数据,图片等资源集中放到APK  A中去. 然后
这个公司的所有APK都使用同一个User ID, 那么所有的资源都可以从APK A中读取.

举个例子:
APK A 和APK B 都是C公司的产品,那么如果用户从APK A中登陆成功.那么打开APK B的时候就不用
再次登陆. 具体实现就是 A和B设置成同一个User ID:
    * 在2个APK的AndroidManifest.xml 配置User ID:
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.demo.a1"
    android:sharedUserId="com.c">
   这个"com.c" 就是user id, 然后packagename APK A就是上面的内容,  APK B可能
   是"com.android.demo.b1" 这个没有限制

这个设定好之后, 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就可以直接打开数据库.
分享到:
评论

相关推荐

    Android一个apk启动另外一个apk

    综上所述,启动另一个APK在Android中主要是通过Intent完成的,涉及Intent的创建、目标指定、数据传递、权限管理和安全考量等多个方面。理解并熟练运用这些知识,能帮助开发者实现更丰富的应用交互。

    Android实现不同apk间共享数据的方法(2种方法)

    总之,通过设置共享User id,Android开发者可以方便地在不同APK之间实现数据共享,尤其适用于同一公司或组织内的多个应用需要共享资源或状态的情况。但务必权衡安全性和便利性,合理选择数据共享策略。

    apk.rar_.apk_android_android apk_apk

    标题中的"apk.rar_.apk_android_android apk_apk"暗示了我们正在讨论的是一个与Android操作系统相关的APK文件,它被压缩在名为"apk.rar"的RAR格式文件中。APK是Android应用程序的主要文件格式,它包含了应用的所有...

    android两个APK相互调用并传参数

    在Android开发中,有时我们需要实现一个应用程序(APK)调用另一个应用程序并传递参数的功能。这通常是通过Intent机制来完成的,Intent是Android系统中用于启动活动(Activity)、服务(Service)或者其他组件的一种...

    android 添加系统权限 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

    eclipse编译出来的apk,安装时报出INSTALL_FAILED_SHARED_USER_INCOMPATIBLE的错误。 原因:apk的AndroidManifest.xml中声明了android:sharedUserId="android.uid.system",但没有相应的签名 解决方案: 1. 找到编译...

    yyg_Android20220307.apk

    yyg_Android20220307.apk

    Android平台可以单独打开多个摄像头的apk

    但是随着时间推移,可能会出现apk与过旧或者最新android SDK不匹配的问题,届时需要找类似的工程源码,重新编译生成apk。 在安装Camera2Basic app的时候,可能会遇到“Failure [INSTALL_FAILED_TEST_ONLY: ...

    Android系统签名APK

    在Android系统中,APK(Android Package)是应用程序的基本打包格式,它包含了应用的所有代码、资源和元数据。为了确保安全性和防止恶意篡改,Android系统对APK进行了签名机制。"Android系统签名APK"是指使用特定的...

    QT for Android下多Apk创建

    在Android平台上,一个项目可能需要根据不同设备的特性或者用户需求生成多个版本的Apk,这就涉及到了Qt的多Apk构建技术。 1. **Qt与Android集成** 在开始创建多Apk之前,首先需要确保你的开发环境已经正确配置了Qt...

    1个apk安装另一个apk,安装多个apk

    在Android系统中,通常我们通过点击APK文件来安装应用,但有时可能需要在一个APK文件内部触发安装另一个或多个APK文件的操作。这在开发过程中可能会遇到,比如需要组合多个功能模块,或者进行更新时分包处理。本文将...

    android2.apk

    android2.apk

    android测试键值apk(一个测试键值的apk,将apk安装到系统,操作键盘或者遥控器,会把相应键值打印出来).zip

    这个名为`keyTest.apk`的应用程序能够帮助开发者深入理解不同输入设备如何与Android系统交互,并优化他们的应用程序以更好地响应各种输入。 首先,让我们深入了解Android系统中的键值事件处理机制。在Android中,...

    Android APK签名异常无法安装-INSTALL-FAILED-SHARED-USER-INCOMPATIBLE 解决

    在Android开发过程中,APK签名异常是一个常见的问题,特别是当出现"INSTALL_FAILED_SHARED_USER_INCOMPATIBLE"错误时,这通常意味着应用安装失败,因为应用的签名与已安装的共享用户ID的应用签名不匹配。本篇文章将...

    apk批量安装/卸载软件(把多个apk安装至安卓平台)

    把多个apk安装至安卓平台(手机,VR眼睛设备,平板等) 自己主要用于VR眼镜的批量安装 使用方法: 1,把安卓设备用数据线连接电脑(USB改为传输文件) 2,把需要安装的apk放进文件夹里面(和Install.bat同级目录) 3...

    android打开系统APK

    首先,我们要知道在Android中,每个应用程序都由一个或多个APK(Android Package)文件组成,这些文件包含了应用的所有资源、代码和元数据。APK文件在系统中被安装后,会有一个对应的包名(Package Name),它是区分...

    Android中的Apk的加固(加壳)原理解析和实现

    ### Android中的APK加固(加壳)原理解析与实现 #### 一、引言 随着移动互联网技术的发展,Android应用程序越来越受到欢迎,但同时也面临着安全威胁,尤其是针对应用程序的反编译攻击。为了保护应用的安全性和知识...

    实现类似android市场多apk同时下载,更新通知栏信息小结

    在Android平台上,构建一个类似Android市场的多APK同时下载并实时更新通知栏信息的功能,是一项技术挑战。这个过程涉及到多个Android系统级别的API和技术点,包括网络请求、文件下载、线程管理、通知栏管理和文件...

    android hdmi 输入 apk 源码 文档

    android hdmi 输入 apk 源码 文档 参考,rk3288 平台 硬件支持hdmiin,软件apk 源码参考

    Android工程打包apk方法

    APK是Android应用程序的包文件格式,包含了所有必要的代码、资源和元数据,使得应用能在Android设备上运行。下面,我们将详细介绍两种常见的Android工程打包APK的方法。 **方法1:使用Android Studio** 1. **打开...

Global site tag (gtag.js) - Google Analytics