博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SharedUserId 与 Android自定义Permission
阅读量:7182 次
发布时间:2019-06-29

本文共 829 字,大约阅读时间需要 2 分钟。

hot3.png

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如下

 

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

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

转载于:https://my.oschina.net/shaorongjie/blog/99283

你可能感兴趣的文章
java设置环境变量
查看>>
POJ 1987 Distance Statistics(树的点分治)
查看>>
[RxJS] Error Handling in RxJS
查看>>
销售订单行上行号LINE_SHIPMENT_OPTION_NUMBER
查看>>
善用GIMP(Linux下的Photoshop),图像处理轻松又自由
查看>>
Docker for windows 入门一(下载安装)
查看>>
AngularJs的MVC模式
查看>>
世界观的内涵是认识论模型
查看>>
Cocos2d-x 3.1.1 Lua演示样例 ActionsProgressTest(进度条)
查看>>
win 下g++ 安装、环境配置等
查看>>
android:如何通过自定义工程模板让新建的工程都默认支持lambda表达式
查看>>
js日期格式化函数
查看>>
Spring 之 控制反转(IoC), 依赖注入(DI)和面向切面(AOP)
查看>>
在字符串S1中删除字符串S2中所包含的字符【转】
查看>>
微软工作这二年
查看>>
二叉搜索树
查看>>
复旦版最佳医院排行 沪21家医院入选全国百佳
查看>>
PHP file_get_contents设置超时处理方法
查看>>
ylbtech-LanguageSamples-XMLdoc
查看>>
27 Best Free Eclipse Plug-ins for Java Developer to be Productive
查看>>