文档章节

SharedUserId 与 Android自定义Permission

adgkns
 adgkns
发布于 2012/12/30 21:47
字数 433
阅读 224
收藏 0

Android给每个APK进程分配一个单独的用户空间,其manifest中的UserId就是对应一个Linux用户

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

SharedUserId有很多需要注意的地方,如果Application的SharedUserId为System.则Application是不能访问SD卡的。为什么会有这样的限制呢?因为卸载SD卡的必要条件是没有进程访问SD卡的资源文件。因此卸载SD卡的时候会杀掉访问SD卡上资源文件的进程。如果Application使用SharedUserId为System,就会连系统一起杀掉。这样的设计是不被允许的。

如果我们给底层文件设置了权限(驱动文件如/dev/sensors),有需要上层应用来访问底层文件,可以通过给系统添加权限的方式来解决。比如我们在init.rc中设置/dev/sensors设置的权限为0660,对应owner和group分别为system和media,我们可以在frameworks/base/core/res目录下的AndroidManifest.xml中添加新的permission如下

<permission android:name="android.permission.USE_SENSORS"
        android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
        android:protectionLevel="dangerous"
        android:label="@string/permlab_useSensors"
        android:description="@string/permdesc_useSensors" />
 

然后在frameworks/base/data/etc目录下的platform.xml中设置使用此权限可以获取media group的权限。

<permission name="android.permission.USE_SENSORS" >
        <group gid="media" />
    </permission>

最后,我们只需要在Application中的AndroidManifest.xml中使用此permission就访问/dev/sensors了。

<uses-permission android:name="android.permission.USE_SENSORS" />

© 著作权归作者所有

adgkns
粉丝 15
博文 47
码字总数 16222
作品 0
广州
程序员
私信 提问
android 应用层如何连接rild

连接rild的方式,一种是通过调用framework接口来实现,通过类似PhoneFactory.getDefaultPhone()方式,当然如果要发送自定义的指令,还要增加相应的接口指令,比较麻烦,研究后再补上相关信息...

wyyew
2012/02/14
1K
2
Android system.uid

Neither user 10071 nor current process has android.permission.DEVICE_POWER. 在自己的activity里写了如下代码 try { IPowerManager power = IPowerManager.Stub.asInterface( ServiceMan......

yuhanxun
2014/06/04
621
0
Android添加System permission

如上这段代码添加系统权限,但是运行报错permission denyied,请问大家知道怎么回事么

指尖上的开源
2016/03/23
227
1
android 在framework的service中调用Settings.System.putInt(x,x,x);异常

在framework自己添加的service中Settings.Global.putInt(mContext.getContentResolver(), "launcher_sourcein", inputSource); 执行此句时就抛出异常java.lang.SecurityException: Package ......

_shieh
2015/11/05
1K
0
Android安全模型之Android安全机制(应用权限)

进程沙箱为互不信任的应用程序之间提供了隔离机制,SharedUserID则为具备信任关系的应用程序提供了共享资源的机制。然而,由于用户自行安装的应用程序也不具备可信性,在默认情况下,Android...

柳哥
2014/12/01
695
0

没有更多内容

加载失败,请刷新页面

加载更多

Nginx 快速安装详解

一、Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамбле...

网络小虾米
16分钟前
4
0
技术分享 | slave_relay_log_info 表认知的一些展开

作者:胡呈清 slave_relay_log_info 表是这样的: mysql> select * from mysql.slave_relay_log_info\G *************************** 1. row *************************** Number_of_lin......

爱可生
18分钟前
3
0
nginx配置http访问自动跳转到https

server {listen 80;server_name www.域名.com;rewrite ^(.*) https://$server_name$1 permanent;}server {listen 443;server_name www.域名.com;root /home/www;ssl on;......

很好亦平凡ms
18分钟前
3
0
SpreadJS:一款中国研发的类Excel开发工具,功能涵盖Excel的 95% 以上

Excel 作为一款深受用户喜爱的电子表格工具,借助其直观的界面、出色的计算性能、数据分析和图表,已经成为数据统计领域不可或缺的软件之一。 基于Excel对数据处理与分析的卓越表现,把Excel...

葡萄城技术团队
18分钟前
2
0
用javafx框架tornadofx做了个天气预报的程序

class WeatherApp : App(WeatherView::class)class WeatherView : View("十五天天气预报") { val weatherVM: WeatherViewModel by inject() val controller: WeatherController by......

oschina4cyy
22分钟前
3
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部