1.通过content Provider/sharedPreferrence

2.通过shareUserId

我们详细介绍一下shareUserId:

Android App Sandbox(android沙箱机制)

我们知道 Linux 中的 Sandbox 主要做隔离工作,将不同任务或用户间的耦合降到最低。Android 应用也借用了 Linux Sandbox技术,将不同 APP 之间做了隔离;APP 之间的隔离主要是资源隔离和权限访问隔离。
每个 Android APP 都运行在他们自己的 Linux 线程中(UID不同),每个应用程序彼此独立,默认情况下无法访问其他应用程序资源。 APP 权限机制为应用程序之间的资源互访提供了可行性,APP必须申请到权限并经过用户授权后才能访问 Android 系统 API 或 其他阴功程序的服务。

如果两个 Android App 运行在同一个进程里(此时的 UID 是相同的),可以共享数据和代码。

如何让两个 APP 运行在同一个进程里?

  • 首先,两个 APP 要用相同的 private key 来签名
  • 然后,添加两个APP manifest.xml 文件中属性 android:sharedUserId,均设置为相同的值或名字(其实是设置成相同的UID)。

利用ShareUserID共享数据

try {Context ct=this.createPackageContext ("com.mythou.serviceID", Context.CONTEXT_IGNORE_SECURITY);SharedPreferences sp = ct.getSharedPreferences("appInfo", MODE_PRIVATE);String str2 = sp.getString("appname", "service");Log.d("mythou", "share preference-->" + str2);} catch (NameNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}

关键代码:

Context ct=this.createPackageContext("com.mythou.serviceID", Context.CONTEXT_IGNORE_SECURITY);

Android Permission 机制

Permissions 机制限制应用访问特定的资源,如照相机、网络、外部存储、查看通话记录以及某些API。
APP 可以自己定义 Permission 来限制别的APP访问自己的资源。别的应用想访问此 APP 的资源,必须在自己的 AndroidManifest.xml 中添加此 Permission。自定义权限也是在 AndroidManifest.xml 通过 标签定义。
自定义一个 Permission,至少需要的元素是 name, description, label 和 protectionLevel。

我们最关心的选项是 protectionLevel

normal,默认值。系统自动授予此 Permission,在 APP 安装的时候能看到申请此 Permission。

signature,具有相同的 Signature的 APP,才能申请此 Permission,否则,系统拒绝。

dangerous,一般来说系统不会自动授予此 Permission,因为此 Permission 会有潜在的威胁;一般来说在使用 APP 的过程中,需要用到此权限,会弹出窗口,让用户来授权。

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>

面试之路(13)-android apk之间共享数据的方式以及shareUserId详解相关推荐

  1. android fragment加载布局的方式,Android中Fragment的加载方式与数据通信详解

    Android中Fragment的加载方式与数据通信详解 发布时间:2020-08-22 18:55:57 来源:脚本之家 阅读:155 作者:Joah 一.加载方式 1. 静态加载 1.1 加载步骤 ...

  2. Java高并发编程:多个线程之间共享数据的方式探讨

    内容摘要 多个线程之间共享数据,按照每个线程执行代码是否相同,我们可以采取不同的处理方式,这里通过简单的卖票示例说明了当每个线程执行相同代码的情况,对于多个线程执行不同代码的情况,处理方式比较灵活,这 ...

  3. android fragment面试,Android fragment之间传递数据的方式?

    方法一: 1.在MainFragment中设置一个setData()方法,在方法中设置更改按钮名称; //MainFragment.java文件中public void setData(String ...

  4. java 多线程 共享数据_JAVA多线程提高四:多个线程之间共享数据的方式

    多个线程访问共享对象和数据的方式 如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如,买票系统就可以这么做. 如果每个线程执行的代码不同,这 ...

  5. 对Android手机系统日历数据增删改查操作详解

    Android手机系统日历数据增删改查详解 前段时间需要开发提取手机系统的日历数据的功能,自己开始研究了一下,刚开始还是比较懵逼的,经过仔细研究还是能够完全贯通了. 如果不想细细研究,可以直接下载我的 ...

  6. 移动应用开发之路 04 Android Studio 5种控件介绍、实战详解

    学校开了一门移动应用开发课程,我一开始兴趣盎然,但是看到使用的环境是 Java 8 的时候心就凉了一半,在询问老师的意见之后决定使用现在比较常用的Android Studio完成学习,特此记录自学之路 ...

  7. 如何在两个线程之间共享数据

    两个线程之间共享数据的方式 Java 里面进行多线程通信的主要方式就是共享内存的方式,共享内存主要的关注点有两个:可见 性和有序性原子性.Java 内存模型(JMM)解决了可见性和有序性的问题,而锁解 ...

  8. Android APP之间共享SharedPreference

    条件 sharedUserId相同 我们知道,Android上的各个APP是用户分离的,每个APP都有不同的UserId,这种共享数据的方式要求这两个APP必须是相同的UserId. 在Android ...

  9. [转载] 如何在Android设备之间共享Google Play应用,音乐等

    参考链接: 使用super访问Java祖父母的成员 We recently showed you how to configure your iOS devices for app and media ...

最新文章

  1. Linux命令cat
  2. 在不丢失堆栈跟踪的情况下重新抛出Java中的异常
  3. Effective C# 原则16:垃圾最小化(译)
  4. 组合数据类型{集合,序列【字符串,元组,列表】,字典}
  5. 工具资源系列之给mac装个虚拟机
  6. collector list 多个分组_【S01E07】groupby方法、GroupBy对象、groupby方法的分组键
  7. IEEP-网络实施-项目交付流程
  8. Win10+Pytorch0.4.1版本+cuda一键安装
  9. Qt|表格代理的实现及使用代码qtableview和qtablewidget均适用
  10. 【大气红歌】著名民通歌唱家拉齐的音乐之路
  11. Unity的UI界面管理器
  12. JQuery选择器超级详细
  13. win10计算机管理中没有本地用户和组怎么办
  14. 【电子电路计算公式】 导线流过电流计算工具,我已经做成一个小工具了(源代码)
  15. mysql中辅导方式选择_MYSQL中如何选择合适的数据类型
  16. response.setHeader()方法设置http文件头的值
  17. 课时8-2:adams建约束副----凸轮约束(平面推杆、尖底推杆)高副(点面、面面接触)
  18. mysql中BY是什么意思,order是什么意思-sql中的orderby是什么意思它是在什 – 手机爱问...
  19. LINUX解压缩TAR.GZ文件命令
  20. Linux中常用命令汇总

热门文章

  1. 武夷岩茶PK铁观音(南北乌龙之我见--清风云雨)
  2. CVPR2022-SemanticStyleGAN
  3. 评弹,有些味道,可惜听不懂!
  4. 此起彼伏的云计算峰会 我们到底听到了什么
  5. C++ 游戏开发(二)见缝插针小游戏
  6. 本地maven archetype 骨架使用
  7. php switch 汉字,php switch 语法
  8. 一文搞懂SOLID原则(javascript)
  9. python判断数是整数还是小数
  10. 《陰陽師·付喪神卷·迷神》原作:夢枕貘