Android轮子哥

Results 363 comments of Android轮子哥

你在这个时候点击按钮判断是否授权的结果是什么样的?

还有你这个问题回答得不规范,既然 issue 模板提了这个问题,就是让提问者把问题确认清楚再提,而不是来一句我手头只有这一台手机然后直接丢给框架作者来确认,我可以肯定地回答你,框架作者是不会帮你确认这个问题是否在特定机型出现的,最终只能是你来确认,无论你用何种办法。

这个问题我测试了一下,原生的 Android 系统不会出现这个问题,因为申请 `WRITE_EXTERNAL_STORAGE ` 在 Android 14 系统会被直接拒绝 ,只不过框架内部做了特殊处理,处理成功了,你说的红米 k70 确实会出现,但是这个问题属于 miui 的问题,你需要反馈给小米 miui 官方,而不是交给框架去过滤,要知道这样做是有风险的,多申请一个权限是没有问题的,但是少一个权限就不一样了,你在权限成功的回调做的操作可能会直接出现崩溃,所以框架不可能擅自主张减少你申请的权限。

我建议你反馈给 miui 官方,否则这个问题将永远存在,另外我可以提供一个临时的解决方案给你:你根据不同的 Android 版本申请权限,如果是 Android 14 就申请 `READ_MEDIA_IMAGES` 权限,否则就申请 `READ_EXTERNAL_STORAGE` 和 `WRITE_EXTERNAL_STORAGE` 权限,如果你这个过程有出现框架内部检查而出现的崩溃记录,可以在链式调用中加上 `unchecked()` 方法,从而避免触发框架内部检查机制。

有时候不是框架不做这些兼容三方厂商,而是不合理,且前期投入的人力和时间成本巨大,搞不搞定还是另外说,所以厂商搞出来的问题,应该丢给厂商处理,而不是哪方好说话或者方便就找他,要分清事情的本质,是谁的问题就由谁来处理。如果你还是不明白我的意思,可以举浅显的一个例子给你听听,我之前遇到过一台 Android 6.0 的 vivo 或者 oppo 手机,它完全不兼容谷歌在 Android 6.0 危险权限特性,也就是你调用 `activity.requestPermissions` 方法,系统会告诉你申请成功,但是实际没有申请,更没有申请成功,如果换成你会怎么处理?你在没有系统源码的情况下怎么处理?

@suikastar 谷歌在 Android 14 设计 `WRITE_EXTERNAL_STORAGE` 权限一申请就被系统拒绝,这个设计有种意思是,Android 14 上面没有这个权限,但是厂商又把它加进去,加进去的意义是什么?就算弹窗申请成功了,什么也干不了,这个就是厂商的问题,不应该由框架来兼容。

我更认为这个问题是 miui 工程师开发出来的 bug,你先反馈给他们看看,后续有结果再反馈我跟进,我再想想怎么弄。

@suikastar 小伙子,我在 21.0 版本优化了该问题,具体优化的方法是,已授权的权限不会丢给系统申请,没有授权的权限才会丢给系统申请,你可以升级到新版本再看看。