@
lfk0000 "AppOpsX 里面有些开关,关了,返回再进去之后发现还是开着的 "
首先排除这个:
如果是小米的 Android 系统,确实有这个问题,原因是小米的 Android 的 AppOps 实现有问题,因此无解,应当避免使用 miui。
接下来:
appops 里只要有一个和位置相关的 OP 被关掉时,全部和定位有关的 OP 都是关闭的。
你提到的几个关于定位的 OP,我记得确实总是会显示 allow,尝试关另一个涉及定位的 OP 就可以了。
我没查过源代码,不清楚为什么这么设计。
AppOpsX 应该是不针对这个做适配。另一个收费的 rikka appops 做了适配,它只显示一个定位许可的选项。
但是无论用哪个,结果都相同。
注意在 Android 8.1 以前定位权限(无论是运行时的,还是 appops)不限制获取当前已经连接的 wifi 热点标识,因此你会注意到在 appops 种关闭定位后,微信,百度地图高德地图依然能获得粗略定位。
xposed 版的 appops 工具和非依赖 xposed 的在作用上没有区别,它们都是调用作为系统部件 AppOps 的外部包装工具。
@
darklh "就像微信,读取联系人是为了你使用添加联系人到通讯录、推荐新朋友等,读取短信是有可能有自动读取验证码的功能,读取图片权限是为了你发朋友圈。"
无论是哪个权限都可以等到实际需要的时候再询问用户,并提供拒绝权限时的备用方法(当然,不可以是“不给权限就不能用”)
这样才符合最小权限原则,才是好的。
仅是添加联系人到通讯录并不依赖于联系人权限,标准的做法是用 startActivityForResult()发送 Intent 开启 Android 系统的联系人,由用户刻意地选择一个联系人后,上述调用就能获取到这个联系人。
读取短信是有可能有自动读取验证码的功能是对的。同样的,可以到需要验证的时候才作要求。
发朋友圈同样也不依赖于 sdcard 权限:
1:朋友圈目前可以仅发文字
2:可以像前面联系人的部分,用 startActivityForResult 通过系统图库返回需要的图片,这么做同样获得了明确的一次性授权,因此不需要给微信提供持久的权限
“你能信任腾讯,为毛不能信任别的 app ”
显然两者没有因果关系