安卓的权限管理

2019-04-05 10:05:38 +08:00
 JasonQs
安卓 6 以后 一些权限需要运行时授予,比如“访问外部文件资源权限” 可能是见得最多的了。

这个权限一般用来干嘛?
比如微信用这个来监听截图文件夹来在你刚截完图之后问你是不是要发。
或者是我把应用的数据文件放在 sd 卡根目录

这个权限可以用来干嘛?
它可以访问到别的应用的公开数据,比如 QQ 的图片缓存

这个权限是必要的?
不是的,安卓给应用分了一个不需要权限的存储文件夹,但大厂可能由于历史原因(毕竟安卓 6 以前对这个权限没这么严格)把数据都放在 sd 卡根目录

我为啥发这个帖子?
安卓的生态是需要开发者维护的。如果遵从开发规范,现在的安卓已经是非常舒适的了。

我希望大厂们在开发新功能的同时,也遵照安卓的开发规范,把历史代码适配到新的系统上去,而不是简单粗暴的不给权限就不给用。
4250 次点击
所在节点    全球工单系统
30 条回复
jasonyang9
2019-04-05 10:16:14 +08:00
希望,也就是靠自觉咯,那我只有 2 个字的回复:呵呵
catalina
2019-04-05 10:19:42 +08:00
你真觉得那帮吃人不吐骨头的大厂会“自觉”?对所谓大厂“用户隐私是一条不可触碰的高压线”的声明,我只有一句 qnmlgb 送给他。
我就从来没见过有权力后没作恶的,人或团体都是。
Immemorial
2019-04-05 10:21:05 +08:00
关于权限… Android Q 给应用的存储空间套了个沙箱…权限也收紧了不少…不过用上也要到年末或者明年了
HongJay
2019-04-05 10:21:51 +08:00
android 开发都快死了。你还要求这要求那。。用小程序去吧。让 qq 微信拉屎你就开心了
gzxu
2019-04-05 10:24:55 +08:00
Anyway,个人开发者表示"/sdcard"比用包名拼接生成路径,或者调用 API 获得路径,方便多了,估计第三方 SDK 厂商感受更明显,因为包名是未知的,内置路径没办法做成 SDK 发布前的编译期间就能确定的常量
JasonQs
2019-04-05 10:25:02 +08:00
是的,只是希望。靠卸载来抵制吗?我觉得太微不足道了。隔壁贴都在说卸载搜狗,可是个人觉得搜狗输入法确实挺好用的。
要卸这个卸那个的,用户以为这样就能对大厂有什么损害呢,其实一点不痒。
同理的还有杀熟,他们能杀熟是因为用户已经离不开了呀,用户除了骂两声还能干嘛呢。
所以我在这边也只是卑微的希望大厂对安卓生态做出些贡献
gzxu
2019-04-05 10:27:18 +08:00
@JasonQs 不恰当地打个比方,大家都在杀熟,让我想起了“劳动者没有办法选择不被剥削,只能选择被这个资本家剥削或者被那个资本家剥削”那句话
JasonQs
2019-04-05 10:27:19 +08:00
@gzxu 也就是传个 context 的事。另外,在根目录堆垃圾我觉得很不好
JasonQs
2019-04-05 10:28:58 +08:00
说到杀熟,我觉得这并不是一件不好的事。软件需要赚钱,我们需要享受服务,我们花钱买服务,我觉得没有什么不妥的
gzxu
2019-04-05 10:29:22 +08:00
@JasonQs 有的 native 库需要在编译期间以宏定义的方式指定路径啥的可能🤔只是猜想,不过人性都是有惰性的吧,能一时爽的东西就会想着一直爽😂😂
catalina
2019-04-05 10:36:45 +08:00
@gzxu 最重要的是第三方 sdk 一般都提供跨 app 追踪的功能,要是不能写 sdcard 的话。。。
zhenghuiy
2019-04-05 11:06:16 +08:00
这事没那么简单:
1,Android 4.4 之前的版本,只要需要写文件到 sdcard 就必须要申请该权限,不管是不是把数据放在应用目录下。
2,Android 4.4 及以后的版本虽然针对应用目录下的文件读写放开了权限但应用目录有个问题是,当 app 卸载会跟着被删除。这对于部分对用户有用的文件(比如用应用编辑的图片等)显然不可接受。
3,就算应用自己克服了前面两点,但二方库、三方库没有处理也一样需要该权限。

理性上大概就是这三种情况。当然还有小部分是开发者素质问题,知识点没更新或者滥用权限。
gzxu
2019-04-05 11:13:02 +08:00
@zhenghuiy 应用可以只在 Android 4.4 以前的系统上申请权限,在 4.4 及以后的系统上用 SAF,这也是文档里面推荐的做法 https://developer.android.google.cn/guide/topics/manifest/uses-permission-element.html#maxSdk
dxppp
2019-04-05 12:13:10 +08:00
Android Q 已经比你捷足先登了
https://sspai.com/post/53287
https://sspai.com/post/53518

我已经用上了
效果不错,adb shell 开启即可
dxppp
2019-04-05 12:18:25 +08:00
dxppp
2019-04-05 12:23:13 +08:00
dxppp
2019-04-05 12:26:11 +08:00
@Immemorial 现在就用了
dxppp
2019-04-05 12:28:06 +08:00
@JasonQs 你这种呼吁比抵制还无厘头
至少我可以保证我的设备我作主
我想用什么我乐意
mohoumk2
2019-04-05 12:51:16 +08:00
如果约束有用,Android Q 就不会引入沙盘机制了
nanaw
2019-04-05 14:13:57 +08:00
然而楼主可能不知道干这种事情的不止是大厂
sdk 供应链污染了解一下,看似多么良心优质的个人开发的 app 照样会流氓拉 shi
它们在培养用户习惯给应用随便授权敏感权限( READ_PHONE_STATUS 和 访问公共存储)而毫不在意
它们成功了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/552274

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX