getActivity / XXPermissions

Android 权限请求框架,已适配 Android 14
Apache License 2.0
5.44k stars 735 forks source link

[Bug]:申请外部存储权限后无法读写文件 #256

Closed AndroidBody closed 4 months ago

AndroidBody commented 5 months ago

框架版本【必填】

18.5

问题描述【必填】

申请权限如下:

val permissionList = ArrayList<String>()
            permissionList.add(Permission.WRITE_EXTERNAL_STORAGE)
            permissionList.add(Permission.READ_MEDIA_IMAGES)
            permissionList.add(Permission.READ_MEDIA_VIDEO)
            permissionList.add(Permission.READ_MEDIA_VISUAL_USER_SELECTED)
            XXPermissions.with(this@LocalPreviewActivity) // 申请单个权限
                .permission(permissionList)
                .request(object : OnPermissionCallback {
                    override fun onGranted(permissions: List<String>, all: Boolean) {
                        if (!all) {
                            return
                        }
                    }
                })

本地文件路径:/storage/emulated/0/DCIM/Hunting/AllFile/2023-12-18/1702890100573.jpg 本地文件确实存在 但是删除失败:

File(it).delete() ——> false File(it).canWrite() ——> 也返回false

复现步骤【必填】

1.视频截图保存到本地 存储路径:

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).toString() + File.separator + firstFolder + File.separator

2.删除文件即可复现

是否必现【必填】

项目 targetSdkVersion【必填】

33

出现问题的手机信息【必填】

Galayx A31

出现问题的安卓版本【必填】

12

问题信息的来源渠道【必填】

自己遇到的

是部分机型还是所有机型都会出现【必答】

目前在三星这款手机发现

框架最新的版本是否存在这个问题【必答】

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

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

issue 列表中是否有人曾提过类似的问题【必答】

是否已经搜索过了 issue 列表但还未能解决的【必答】

是否可以通过 Demo 来复现该问题【必答】

提供报错堆栈

未发现报错信息日志,以上信息是经过断点验证

提供截图或视频

只是删除,保存本地可以

提供解决方案

暂未找到解决方案,谢谢

AndroidBody commented 5 months ago

经过验证,Galaxy A31机型手机,当app保存数据如(图片或者视频)到本地DIRECTORY_DCIM,DCIM路径下,APP卸载后,在进行重新安装,则文件删除失败,给予权限也未能成功。解决方案,目前未知,感谢支持。

getActivity commented 5 months ago

@AndroidBody 小伙子,当项目 targetSdkVersion >= 29 的时候,就必须申请 MANAGE_EXTERNAL_STORAGE 权限,才能正常读写外部存储上面的文件。

AndroidBody commented 4 months ago

MANAGE_EXTERNAL_STORAGE googleplay 会被阻止

getActivity commented 4 months ago

@AndroidBody 小伙子,那你只能适配分区存储的特性了。