粘贴一篇关于权限的文章:最近在做个东西,巧合碰到了sharedUserId 的问题,所以收集了一些资料,存存档备份。

安装在设备中的每一个apk文件,Android 给每个 APK 进程分配一个单独的用户空间,其 manifest 中的 userid 就是对应一个 Linux 用户都会被分配到一个属于自己的统一的 Linux 用户 ID,并且为它创建一个沙箱,以防止影响其他应用程序(或者其他应用程序影响它)。

用户 ID 在应用程序安装到设备中时被分配,并且在这个设备中保持它的永久性。

通过 Shared User id 拥有同一个User id的多个APK可以配置成运行在同一个进程中.所以默认就是可以互相访问任意数据. 也可以配置成运行成不同的进程,同时可以访问其他APK的数据目录下的数据库和文件.就像访问本程序的数据一样.

对于一个 APK 来说,如果要使用某个共享 UID 的话,必须做三步:

1、在 Manifest 节点中增加 android:sharedUserId 属性。

2、在 Android.mk 中增加 LOCAL_CERTIFICATE 的定义。

如果增加了上面的属性但没有定义与之对应的 LOCAL_CERTIFICATE 的话,APK是安装不上去的。

提示错误是:

Package com.test.MyTest has no signatures that match those in shared user android.uid.system; ignoring!

也就是说,仅有相同签名和相同 sharedUserID 标签的两个应用程序签名都会被分配相同的用户ID。

例如所有和 media/download 相关的 APK 都使用 android.media 作为 sharedUserId 的话,那么它们必须有相同的签名 media。

3、把 APK 的源码放到 packages/apps/ 目录下,用 mm 进行编译。

举例说明一下。

系统中所有使用android.uid.system作为共享UID的APK,都会首先在manifest节点中增加android:sharedUserId=”android.uid.system”,

然后在 Android.mk 中增加 LOCAL_CERTIFICATE := platform。可以参见Settings等。

系统中所有使用 android.uid.shared 作为共享 UID 的 APK,都会在 manifest 节点中增加android:sharedUserId=”android.uid.shared”,然后在 Android.mk 中增加 LOCAL_CERTIFICATE := shared。可以参见Launcher等

系统中所有使用 android.media 作为共享 UID 的 APK,都会在 manifest 节点中增加android:sharedUserId=”android.media”,

然后在 Android.mk 中增加 LOCAL_CERTIFICATE := media。可以参见Gallery等。

另外,应用创建的任何文件都会被赋予应用的用户标识,并且正常情况下不能被其他包访问。

当通过 getSharedPreferences(String,int)、openFileOutput(String、int)

或者 openOrCreate Database(String、int、SQLiteDatabase.CursorFactory)

创建一个新文件时,开发者可以同时或分别使用

MODE_WORLD_READABLE 和MODE_WORLD_RITEABLE 标志允许其他包读/写此文件。

当设置了这些标志后,这个文件仍然属于自己的应用程序,但是它的全局读/写和读/写权限已经设置,所以其他任何应用程序可以看到它。

关于签名:

build/target/product/security 目录中有四组默认签名供 Android.mk 在编译APK使用:

1、testkey:  普通 APK,默认情况下使用。

2、platform:该 APK 完成一些系统的核心功能。经过对系统中存在的文件夹的访问测试,

这种方式编译出来的 APK 所在进程的 UID 为 system。

3、shared:   该APK需要和home/contacts进程共享数据。

4、media:该APK是media/download系统中的一环。

应用程序的 Android.mk 中有一个 LOCAL_CERTIFICATE 字段,由它指定用哪个 key 签名,未指定的默认用 testkey.

java实现手机开关机_Android 系统重启与关机:Java 代码实现相关推荐

  1. java实现手机开关机_Android实现关机与重启的几种方式(推荐)

    下面我们来探究Android如何实现关机,重启:在Android中这种操作往往需要管理员级别,或者root Android实现的方式如下几种: 默认的SDK并没有提供应用开发者直接的Android系统 ...

  2. 计算机锁定不能强制选项无法关机,win7系统1909无法关机只能强制关机重启的解决办法...

    win7系统1909无法关机只能强制关机重启的解决办法? 我们在安装更新了win71909版本系统之后,在关电脑的过程中发现电脑一直停留在显示关机的界面,但是并没有直接关掉只能重启.对于这种问题,小编 ...

  3. 计算机关机后系统更新,电脑关机的时候一直在安装更新,已经一天了,还没更新完,也关不了机,怎么办...

    电脑关机的时候一直在安装更新,已经一天了,还没更新完,也关不了机,怎么办以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ...

  4. w ndows7快速关机,windows7怎么快速关机|win7系统实现快速关机的方法

    windows7系统 怎么快速关机?现如今大家追不仅仅追求开机速度,关机速度也是大家所追求的.要不别人都下班了,你的电脑还在等待关闭是不是很不爽呢?windows7怎么快速关机?可以通过设置注册表来实 ...

  5. win10关机后自动重启_win10关机后自动开机的解决方法

    正文 最近有网友反馈,遇到了windows10关机后自动开机的问题.其实win10自动重启有可能是由于硬件不兼容所造成的,那么win10关机自动重启如何解决呢?接下来小编介绍windows10关机后自 ...

  6. 计算机关机键 自动重启,电脑关机自动重启_为什么我的电脑会自动关机和重启...

    为什么电脑关机自动重启? 1.CPU温度异常. 遇到电脑自动关机或重启这类问题,我们需要看看CPU温度是不是正常.电脑CPU散热不佳,可能引起电脑自动关机或重启. 一般导致电脑CPU温度异常的原因是C ...

  7. linux crontab 定时关机,Linux系统使用--定时关机的实现以及crontab命令和文件详解...

    一.前言 为了以后不用再半夜跑回实验室关电脑,昨天中午花了两个小时左右的时间搞了一下如何实现Linux系统的定时关机,结果没搞出来.在老师的指点下得以解决,写一博客分享之. 另,发现现在网上的资料越发 ...

  8. java实现手机开关机_andriod开发之自动开关机实现代码

    任何开发语言都有一定的难度,所以大家在学习的过程中不要感到枯燥,要有耐心.废话不多说,下面为大家介绍Android Widget添加自定义控件.首先看一个引用: ARemoteViews object ...

  9. 玩转手机中的linux系统termux并搭建java开发环境

    目标 春节在家,偶尔要出门在外.出门在外的时候,没有电脑可以写代码.那么代码瘾上来了怎么办呢?我在想能不能在手机上写代码呢? 手机远程电脑是一种方式,但是远程开发这种方式,它的要求比较高,首先你要有台 ...

最新文章

  1. Git 分布式版本管理
  2. 店铺管理系统开发实践-领域模型
  3. 【Java12】tomcatservlet(nginx,web.xml,生命周期,适配器优化),requestresponse(请求转发,登陆案例(1),重定向,文件下载)
  4. 工作者对象HttpWorkerRequest
  5. LeetCode 1000. 合并石头的最低成本(区间DP)
  6. JAVA线程池ScheduledExecutorService周期性地执行任务 与单个Thread周期性执行任务的异常处理
  7. xml文件中同时满足多个条件_问与答81: 如何求一组数据中满足多个条件的最大值?...
  8. php$_GET的作用,PHP-$_GET和$_POST不起作用
  9. 面向计算机体系结构,面向计算机体系结构的程序优化.ppt
  10. 开课吧Java课堂:什么是主线程?如何去运用?
  11. oracle的pl sql教程,Oracle PL SQL从入门到精通_IT教程网
  12. csdn 挣积分和c币方法指南
  13. Activity启动模式singleTask模式
  14. 客户端之H5拉起第三方app并跳转到指定页面
  15. Vue的引入方式,属性和计数器案例
  16. 考研语法整理(简洁版)
  17. 分布式事务简介(seata)
  18. 在html文件中url称之为什么,html+css网页设计复习题
  19. C++学习记录8:定义一个分数类Score和学生类Student
  20. 第六十八篇:从ADAS到自动驾驶(一):自动驾驶发展及分级

热门文章

  1. IOS UISwitch 组件的使用
  2. Java 判断文件是否隐藏
  3. Java 字符串拼接的各种玩法
  4. 计算机大赛横幅标语有趣的,有趣的横幅标语
  5. java实现日期让随动变_java工具类(四)之实现日期随意跳转
  6. 【OpenCV 例程200篇】99. 修正阿尔法均值滤波器
  7. stringbuilder删除最后一个字符_Java类-StingBuffer,StringBuilder
  8. python 反射机制
  9. 手机突然电量消耗很快_手机掉电突然变快?这5点操作你肯定至少做了其中一个!...
  10. 一套完整的Selenium自动化测试框架设计实战,这次38K, 妥了