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

android 13没有READ_EXTERNAL_STORAGE怎么办呢 #214

Closed
zhangruiyu opened this issue Nov 27, 2023 · 16 comments · Fixed by #215
Closed

android 13没有READ_EXTERNAL_STORAGE怎么办呢 #214

zhangruiyu opened this issue Nov 27, 2023 · 16 comments · Fixed by #215
Labels
enhancement New feature or request

Comments

@zhangruiyu
Copy link

目前可以给targetSdkVersion 设置为安卓13以下 但是不是长久之计啊

@rosuH rosuH added the help wanted Extra attention is needed label Nov 27, 2023
@rosuH
Copy link
Owner

rosuH commented Nov 27, 2023

@zhangruiyu 你们项目还在使用这个库,应用场景是什么?选择文件还是图片还是兼有之?

@zhangruiyu
Copy link
Author

@zhangruiyu 你们项目还在使用这个库,应用场景是什么?选择文件还是图片还是兼有之?

为了选择音频导入,用这个库能很直观的看到文件路径

@rosuH
Copy link
Owner

rosuH commented Nov 27, 2023

@zhangruiyu 不着急的话我得看看能否适配新的分区存储。但是我刚刚试了下把 sample target 改为 13,然后跑在 MIUI 上依然可以正常申请权限 😂,不知道是不是特殊优化了(是特殊优化)。

image

官方镜像是直接提示没有权限。
image

@rosuH
Copy link
Owner

rosuH commented Nov 27, 2023

我稍微阅读了下文档,目前来看要保持现有的 UI 和交互则可能需要一些调整。

  1. 正如我之前提到的 All About Scope Storage. #146 ,申请 MANAGE_EXTERNAL_STORAGE 管理 SD 存储中的所有文件,这样这个库可以访问所有内容,可以保持现有的 UX。但这个只有极少数 APP 可以会申请此权限。或许后续我可以提供一个可选项,让宿主 APP 去申明并且申请这个权限。
  2. 单独获取媒体文件权限。基于此先查询 Bucket,再查询 Bucket 内的 Media Files。这个需要对查询做改造 🤔,但是这个权限只有媒体文件,不包含其他二进制、文档之类的。
  3. 而访问文档只能使用 授予对目录内容的访问权限,单个目录授予,而且无法授予根目录,用起来交互会非常奇怪。

基于上述三点,目前似乎没有非常完美的解决方案。可能我后面得更新一个 breaking change 的版本,支持这三种模式,亦或者不更新了 😂

@zhangruiyu
Copy link
Author

其实目前来说是够用的,国内app对api要求才到31,估计明年才会33,国内对于方案1没要求,不像gp,整个权限是没毛病的,方案2其实最好,针对大部分应用,方案2就够用了,方案3不是很好,无法授权根目录,而且很多用户对文件授权会瞎点,小白用户占比很高,其实最好是方案2,个人感觉

@zhangruiyu
Copy link
Author

😂相信这个库还是有很多很多人用的,只不过很多人没有去改api版本。希望不要不维护啊

@Diper1996
Copy link

目前可以给targetSdkVersion 设置为安卓13以下 但是不是长久之计啊

方案1、只需要在进入FilePickerActivity之前,判断一下版本,然后申请Android13的权限即可(READ_MEDIA_AUDIO,READ_MEDIA_IMAGES,READ_MEDIA_VIDEO)。
方案2、如果你的项目是kotlin的话,你可以下载源码放进你的项目中,然后去FilePickerActivity的onCreate方法中,在loadList()之前申请Android13的权限即可。

@zhangruiyu
Copy link
Author

目前可以给targetSdkVersion 设置为安卓13以下 但是不是长久之计啊

方案1、只需要在进入FilePickerActivity之前,判断一下版本,然后申请Android13的权限即可(READ_MEDIA_AUDIO,READ_MEDIA_IMAGES,READ_MEDIA_VIDEO)。 方案2、如果你的项目是kotlin的话,你可以下载源码放进你的项目中,然后去FilePickerActivity的onCreate方法中,在loadList()之前申请Android13的权限即可。

代码里 他判断了存储权限,不管有没有申请READ_MEDIA_AUDIO等权限,目前代码里都判断了这个权限

@zhangruiyu
Copy link
Author

只能下载源码下来 手动去移除这个权限

@Diper1996
Copy link

只能下载源码下来 手动去移除这个权限

对,修改源码是最方便的解决方式。

@zhangruiyu
Copy link
Author

emmm 作者其实还在线 ,不如 直接给这个判断去掉吧 ,我们自己去判断申请什么权限 @rosuH

@rosuH
Copy link
Owner

rosuH commented Dec 7, 2023

emmm 作者其实还在线 ,不如 直接给这个判断去掉吧 ,我们自己去判断申请什么权限 @rosuH

好消息,我在线。坏消息,得晚上才能改ヽ(`Д´)ノ

@Diper1996
Copy link

emmm 作者其实还在线 ,不如 直接给这个判断去掉吧 ,我们自己去判断申请什么权限 @rosuH

好消息,我在线。坏消息,得晚上才能改ヽ(`Д´)ノ

迟早无所谓,只要还会维护就行。感谢大佬付出

@zhangruiyu
Copy link
Author

😬确实感谢。我是给做成flutter插件。哈哈。这个是最好用的,

rosuH added a commit that referenced this issue Dec 7, 2023
## BREAKING CHANGES

[Update]
- Removed permission request action in the library. Library users are now responsible for managing permissions in their own.
- Upgraded targetSDK && compileSDK to 33
- Upgraded APG and Gradle.
[Add]
- Log proxy.

WIP: Support MediaStore query.
Issue: #214
@rosuH rosuH linked a pull request Dec 7, 2023 that will close this issue
@rosuH rosuH closed this as completed in #215 Dec 7, 2023
@rosuH rosuH added enhancement New feature or request and removed help wanted Extra attention is needed labels Dec 7, 2023
@rosuH
Copy link
Owner

rosuH commented Dec 7, 2023

试试 com.github.rosuH:AndroidFilePicker:1.0.0

@badboy-tian
Copy link

@rosuH 大佬都在用kotlin 1.9了嘛

The 'kotli