在安卓手机上,首次打开一款刚安装的App,常常看到这么一幕,“是否允许应用访问您设备上的照片、媒体内容和文件?”的提示。
很多网友都会想,这是要“拿我照片和文件,太过分了吧?不行,必须拒绝。”
然而,App们穷追不舍,还是提示存储权限是必需的,不给还是不行。
不光如此,有网友还发现这么一幕,在应用市场下载安装App时,还要读取SD卡的内容,What?我的手机不是没有SD卡吗?是我Out还是App开发商Out了?
以上的这些疑问,虽然各种描述不同,但围绕的都是索要安卓系统的“存储权限”。最近,“举报菌”做了一次小范围统计,下载了近百款App发现,竟然100%的App都索要了存储权限。
这个权限到底干什么用的?App有啥企图非得要这个权限,“举报菌”来给大家分析一下。
首先,需要了解下安卓的存储机制。在安卓系统中,每一个App都有一块属于自己的内部存储区,别的App不能访问。同时,还有一块App外部的公共存储区,前面这个提示,实际就是App在申请访问这个公共存储区的存储权限。存储权限是个权限组,实际上包含两个权限,一个是READ_EXTERNAL_STORAGE(读公共存储区),一个是WRITE_EXTERNAL_STORAGE(写公共存储区),顾名思义,一旦用户选择“允许”,那么App就具有了读公共存储区和写公共存储区的能力。
那么公共存储区是干什么的呢?
在早期的安卓手机中,由于内部存储空间较小,一般会插入SD 闪存卡来扩展存储空间,这个SD闪存卡映射的磁盘就是公共存储区,也是手机之外的外部存储区。后来随着手机制造工艺的不断提升,大部分手机早已不需要外置的SD闪存卡,但是安卓系统出于“习惯性”考虑,仍然保留名为/sdcard的目录,事实上该目录已属于手机内部固化的存储区域,指的便是App均可申请访问的公共存储区,但是有些安卓系统和有关文档中依然翻译为“SD卡中的内容”。
那么公共存储区中又有什么呢?
尽管公共存储区是一个所有App共享的存储区域,但是仍然与用户“隐私”相关的数据和文件。按照安卓系统的设计,以下内容默认存储在公共存储区:
* 手机拍照的照片、拍摄的视频
* 各种下载的文件
* 微信、QQ等即时通信接收的文件
* 蓝牙分享接收的文件
*App自身的缓存、日志等等
可以看出,绝大部分就是一些占手机容量较大的文件。
那么App使用该权限到底能做什么呢?
从用户的角度来看,公共存储区涉及了大量与用户“隐私”相关的数据和文件。但是,从开发者的角度来看,公共存储区的作用可是非常大,比如有以下的功能要用到该权限:
(1)访问公共存储区的文件:比如我们发微博、发朋友圈上传图片,微博、微信App确实需要具有该权限读取公共存储区中的图片文件。
(2)分享:使用分享功能时,一个App中的文件可以利用公共存储区为暂存区,发送给另一个App。比如在我们将网页中的图片分享给微信,此时浏览器App就将图片存储到公共存储区,然后供微信App读取。
(3)大文件缓存:一些视频类应用,通常会利用公共存储区做大文件的暂存。
(4)日志存储:很多App将自身日志存储于公共存储区,方便诊断和调试。
(5)第三方SDK使用:如果App嵌入的第三方SDK需要用到该权限,App就不得不申请。
但是,不排除App申请该权限后进行滥用的可能,因为获取存储权限后,理论上就可以收集用户存储在手机上的所有照片、文件等个人的数据和文件。
以上分析看出,“存储”确实支撑了App的很多功能,申请“存储”权限也几乎成为了App们的标配,但也不是说所有的App都真正意义上需要这个权限,需要根据实际情况分析。
例如,出于日志存储和大文件缓存的目的,根据Android开发者文档,从4.4以后,App可以使用getExternalCacheDir和getExterFilesDir API的返回值来访问属于自己的公共存储区,而无需再申请存储权限。
如果“存储”权限确实是App所必需,那么要求用户授权时,需要向用户明确、同步传达充分的理由,而不是通过“高高在上”、“穷追不舍”的姿态让用户不得不同意,最后让用户感到“不适”、“不解”,让征得同意过程变成一次不好的“隐私体验”。
权限申请的最小化,就是对用户打扰的最小化,不光存储权限是这样,“举报菌”建议开发者们仔细分析App的实际需求,仔细、审慎地确认是否真正需要权限,而不是带着“申请了再说”、“留着以后有用”等想法,让尊重用户“隐私体验”变成一句空话。同时,也期待安卓系统提供方优化对该权限功能相关的描述,细化对公共存储区的管理,给予App们提供更多的便利和选择。
声明:本文来自App个人信息举报,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。