Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[建议]:WRITE_EXTERNAL_STORAGE相关权限处理问题 #318

Open
suikastar opened this issue Aug 24, 2024 · 9 comments
Open

[建议]:WRITE_EXTERNAL_STORAGE相关权限处理问题 #318

suikastar opened this issue Aug 24, 2024 · 9 comments
Labels
help wanted Extra attention is needed

Comments

@suikastar
Copy link

你觉得框架有什么不足之处?【必答】

在小米k70标准版,android14上,使用本框架,单独申请WRITE_EXTERNAL_STORAGE权限,系统不会弹出权限申请弹窗,符合预期。
单独申请READ_MEDIA_IMAGES权限,系统弹一次是否允许访问【照片和视频】,符合预期。
但当WRITE_EXTERNAL_STORAGE权限与READ_MEDIA_IMAGES权限一起申请时,系统会先后弹两次弹窗,一次问你是否允许访问【照片、视频、音频】,一次问你是否允许访问【照片和视频】,令人困惑。
QQ截图20240824164323
QQ截图20240824164341

既然谷歌说了WRITE_EXTERNAL_STORAGE在高版本无用,那还申请它干嘛。框架是否可以自作主张,干脆就不申请了,帮用户做决定,给它过滤掉(在optimizeDeprecatedPermission方法里)。
QQ截图20240824165756

issue 是否有人曾提过类似的建议?【必答】

框架文档是否提及了该问题【必答】

是否已经查阅框架文档但还未能解决的【必答】

你觉得该怎么去完善会比较好?【非必答】

No response

@suikastar suikastar added the help wanted Extra attention is needed label Aug 24, 2024
@wsdydeni
Copy link

有些系统会改的,不一定会遵循官方的

@getActivity
Copy link
Owner

getActivity commented Aug 26, 2024

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

@getActivity
Copy link
Owner

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

@getActivity
Copy link
Owner

getActivity commented Aug 26, 2024

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

@suikastar
Copy link
Author

@getActivity 可是目前框架已经有减少权限请求的前科了,我认为这个处理没问题,可以继续犯下去,保证逻辑统一。反而你提的另一个方案,让大家改变使用XXPermissions的习惯,在使用XXPermissions前再判断一次系统版本,我觉得不太好,这违背了使用XXPermissions的初衷。

@suikastar
Copy link
Author

@getActivity 上面的代码中,单独申请WRITE_EXTERNAL_STORAGE,直接提前返回了,跳过了执行launchPermissionRequest,直接回调成功,不也是一种框架擅自主张减少申请?你可以把我这次的建议解释为逻辑统一,而不是给国产手机系统擦屁股。

@getActivity
Copy link
Owner

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

@getActivity
Copy link
Owner

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

@suikastar
Copy link
Author

@getActivity 好的

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

3 participants