Android具有system权限为什么不可以访问SDcard

来源:互联网 发布:农村淘宝服务中心电话 编辑:程序博客网 时间:2024/05/16 09:21

Android具有system权限为什么不可以访问SDcard

大家android系统app开发时候经常会用到android.uid.system这个uid,它就是代表我们写的app是属于系统app,当然这时候也要求我们要和系统有一样的签名才行。这时候app具有了系统权限可以进行一些系统api的调用,例如静默安装等。。。

但是如果我们app想去访问读写sdcard的时候却是没有权限,笔者当时就纳闷,为啥我是系统app居然还不能访问sdcard,这不是搞笑吗,普通app都可以去访问sdcard,然后就是网上查找相应资料,但是大多都是修改系统Volume.cpp文件让我们系统app可以访问sdcard,只有解决没有真正说明理由,笔者依然很不满意对这些答案,我其实就想知道安卓为什么会要求这样?

终于在官方文档中找到如下解释:

Processes that continue holding open fds on the sdcard a little after it is
requested to be unmounted will be killed so that it can unmount.

We don't want the system process to  be able to access the sdcard to avoid
these kinds of issues (and just general security cleanliness), so that it
does not have permission to access it.

可能大家看到这英文文档解释也还是不懂,不知道它在说什么,哈哈笔者刚开始也是这样的,没关系。

下面就让笔者给大家用中文解释一下为什么吧(其实也就是直白易懂的一种翻译)

sdcard属于易插拔的外部设备,如果说我们系统app可以访问sdcard,并且一直持有sdcard中相应文件的fds(文件句柄),如果我们sdcard这时候拔除,

这时系统app就有可能因为fds文件句柄没有被killed,但是系统app一般是不可以被killed,因为你想想如果我们的主页launcher被killed了或者其他重要系统app被killed

就有可能导致一系列安全问题,如主页crash或者手机重启等等,也就是我一拔sdcard结果手机死机了的悲剧结果。。。

说到这里大家应该很明白为什么Android具有system权限不可以访问SDcard。

以上分析属于笔者自己理解如果有错误请大神指出,欢迎转载


2 0
原创粉丝点击