- 浏览: 94921 次
- 性别:
- 来自: 北京
文章分类
最新评论
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 系统是基于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涉及到的设计模式
2015-03-17 16:59 5171、适配器模式:ListView或GridView的Ada ... -
Android4.4 从图库选图返回
2014-02-14 19:06 1913private View.OnClickListener ... -
Android 右滑关闭当前Activity(类微信)
2013-11-14 15:34 13359主要原理为监控触屏事件和手势事件,在触屏事件处理函数中调用手 ... -
NDK,JNI (前言)
2013-07-29 19:55 7085JNI是Java Native Interface的缩写, ... -
NDK,JNI (前言)
2013-07-29 19:51 21JNI是Java Native Interface的缩写,译 ... -
哈哈,考试题
2013-04-28 18:02 708Java 相关: Q1. 接口是否可继承接口?抽象类是否 ... -
小知识点积累
2013-04-18 15:00 1647android中EditText的字数统计取巧方式: ... -
NDK,JNI 积累
2013-03-04 12:31 1211使用javah 将某一个含有native方法的class ... -
小错误(怪异问题)积累
2012-11-06 16:00 856写道 用eclipse编译程序,然后在android ... -
loadIcon 和 getApplicationIcon
2012-08-07 14:25 39472012年8月7日 13:50 今天在修复Tes ... -
由SingleInstance和SingleTask引发的 问题
2012-06-29 10:56 2551引用 Q1: Activity A 设置模式为SingleI ... -
关于Cursor的遇见的错误描述
2012-06-15 18:54 1135【解决】android.database.CursorInde ... -
Android 使用xliff 格式化字符串
2012-04-18 11:41 6144Android资源字符串/res/values/stri ... -
Android MMS模块数据存取 (转)
2012-04-01 10:45 6056数据表 MMS 模块总共包含 17 ... -
SpannableStringBuilder 和 SpannableString(转)
2012-03-29 11:05 11380EditText: 通常用于显示文字,但有时 ... -
Bitmap Drawable
2012-03-28 14:36 1917Drawable和 Bitmap 的区别: ... -
收藏的优秀代码
2012-03-27 11:38 738实现类似手机QQ的可折叠固定标题列表 PinnedHeade ... -
2012年遇到的笔试题
2012-03-02 00:48 1712一、选择题 1.java.io包中定义了多个流类型来实现输入和 ... -
Android学习笔记之AndroidManifest.xml文件解析(转)
2011-12-03 01:17 806一、关于AndroidManifest.xml Android ... -
Error generating final archive: Debug Certificate expired on 问题
2011-11-09 19:24 1943Error generating final archive: ...
相关推荐
综上所述,启动另一个APK在Android中主要是通过Intent完成的,涉及Intent的创建、目标指定、数据传递、权限管理和安全考量等多个方面。理解并熟练运用这些知识,能帮助开发者实现更丰富的应用交互。
总之,通过设置共享User id,Android开发者可以方便地在不同APK之间实现数据共享,尤其适用于同一公司或组织内的多个应用需要共享资源或状态的情况。但务必权衡安全性和便利性,合理选择数据共享策略。
标题中的"apk.rar_.apk_android_android apk_apk"暗示了我们正在讨论的是一个与Android操作系统相关的APK文件,它被压缩在名为"apk.rar"的RAR格式文件中。APK是Android应用程序的主要文件格式,它包含了应用的所有...
在Android开发中,有时我们需要实现一个应用程序(APK)调用另一个应用程序并传递参数的功能。这通常是通过Intent机制来完成的,Intent是Android系统中用于启动活动(Activity)、服务(Service)或者其他组件的一种...
但是随着时间推移,可能会出现apk与过旧或者最新android SDK不匹配的问题,届时需要找类似的工程源码,重新编译生成apk。 在安装Camera2Basic app的时候,可能会遇到“Failure [INSTALL_FAILED_TEST_ONLY: ...
yyg_Android20220307.apk
eclipse编译出来的apk,安装时报出INSTALL_FAILED_SHARED_USER_INCOMPATIBLE的错误。 原因:apk的AndroidManifest.xml中声明了android:sharedUserId="android.uid.system",但没有相应的签名 解决方案: 1. 找到编译...
在Android系统中,APK(Android Package)是应用程序的基本打包格式,它包含了应用的所有代码、资源和元数据。为了确保安全性和防止恶意篡改,Android系统对APK进行了签名机制。"Android系统签名APK"是指使用特定的...
在Android平台上,一个项目可能需要根据不同设备的特性或者用户需求生成多个版本的Apk,这就涉及到了Qt的多Apk构建技术。 1. **Qt与Android集成** 在开始创建多Apk之前,首先需要确保你的开发环境已经正确配置了Qt...
在Android系统中,通常我们通过点击APK文件来安装应用,但有时可能需要在一个APK文件内部触发安装另一个或多个APK文件的操作。这在开发过程中可能会遇到,比如需要组合多个功能模块,或者进行更新时分包处理。本文将...
android2.apk
在Android开发过程中,APK签名异常是一个常见的问题,特别是当出现"INSTALL_FAILED_SHARED_USER_INCOMPATIBLE"错误时,这通常意味着应用安装失败,因为应用的签名与已安装的共享用户ID的应用签名不匹配。本篇文章将...
把多个apk安装至安卓平台(手机,VR眼睛设备,平板等) 自己主要用于VR眼镜的批量安装 使用方法: 1,把安卓设备用数据线连接电脑(USB改为传输文件) 2,把需要安装的apk放进文件夹里面(和Install.bat同级目录) 3...
首先,我们要知道在Android中,每个应用程序都由一个或多个APK(Android Package)文件组成,这些文件包含了应用的所有资源、代码和元数据。APK文件在系统中被安装后,会有一个对应的包名(Package Name),它是区分...
### Android中的APK加固(加壳)原理解析与实现 #### 一、引言 随着移动互联网技术的发展,Android应用程序越来越受到欢迎,但同时也面临着安全威胁,尤其是针对应用程序的反编译攻击。为了保护应用的安全性和知识...
在Android平台上,构建一个类似Android市场的多APK同时下载并实时更新通知栏信息的功能,是一项技术挑战。这个过程涉及到多个Android系统级别的API和技术点,包括网络请求、文件下载、线程管理、通知栏管理和文件...
android hdmi 输入 apk 源码 文档 参考,rk3288 平台 硬件支持hdmiin,软件apk 源码参考
APK是Android应用程序的包文件格式,包含了所有必要的代码、资源和元数据,使得应用能在Android设备上运行。下面,我们将详细介绍两种常见的Android工程打包APK的方法。 **方法1:使用Android Studio** 1. **打开...
我们可以创建一个隐式Intent,指定ACTION_VIEW和MIME类型为`application/vnd.android.package-archive`,然后传递APK的文件路径作为数据源。这样,系统就会启动安装程序来处理这个Intent。 ```java Intent ...