相对于其他读取联系人 /短信 /电话权限,存储权限并不敏感。这些 app 不会把非常重要的资料放到公共存储区域。换个角度看,用户随便删除也不会造成太大麻烦。
的确是很多 sdk 要求存储权限,连 react-native 都不免俗。参加 https://github.com/facebook/react-native/issues/5886,根据里面的描述,即使 app 开发者在 manifest 中手动把权限去掉,gradle 也会自动加入。
限制难度更大。其他权限只要在 java 和 ipc 层就能拦截,文件系统权限需要内核 /命名空间等技术。纵观所有主流桌面系统,有哪个做到隔离每个运行进程的文件系统的? Windows/OSX 上面各种权限滥用的程度要比 mobile 严重得多,随便在文件系统乱拉屎更是司空见惯,也没见大家抱怨什么。( Linux 上非开源的二进制程序没人敢随便运行,只能放到 chroot/docker 里面)
只要可开关的权限,一定会有 app 耍流氓,但仅限部分有资格刷大牌的流氓。相反如果 android 像 ios 一样一刀切,用户连文件系统都看不到,用户也不见得喜欢。(这是我不喜欢 iphone 的最大原因)
普通用户能做的就是眼不见为净,如果空间实在不够用,推荐大家用这个: https://f-droid.org/en/packages/com.google.android.diskusage
@rikka 感觉如果要做到重定向,最佳入口是在 app_process fork 出进程之前,和 supersu 做 mount namespace isolation 类似。另一个入口是 fuse/sdcardfs
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.