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

v3.10.8 Android 13 依然有权限适配问题,希望能修复一下 #2629

Closed
xiaoyvyv opened this issue Mar 21, 2023 · 21 comments
Closed

Comments

@xiaoyvyv
Copy link

Current use version?

v3.10.8


Will this problem occur in demo?


Describe the problem or provide an error log?

描述问题或提供错误log?


@Marvelouslp
Copy link

作者的源码都在这里,如果着急的话,可以把源码下载到项目中以依赖module的形式接入,自己修改一下源码中的权限判断逻辑即可

@po1xiao
Copy link
Contributor

po1xiao commented Mar 22, 2023

我也发现了,有一个手机,授予了所有权限,仍然提示“读取内存卡权限被拒绝”
机型:OPPO Reno6 Pro 5G
os:Coloros 13.0

app卸载重装后仍无法恢复,是个小概率问题

@henryhong111
Copy link

pixel4
13
授予了所有权限,仍然提示“读取内存卡权限被拒绝”

@xiaxinqing
Copy link

我以为就我自己有这个问题

@xiaoyvyv xiaoyvyv changed the title v3.10.8 Android 13 依然有权限适配问题,需要能修复一下 v3.10.8 Android 13 依然有权限适配问题,希望能修复一下 Mar 23, 2023
@whatisjava
Copy link

我这vivo审核也发现了这个问题,是在Android13上

@whatisjava
Copy link

我也发现了,有一个手机,授予了所有权限,仍然提示“读取内存卡权限被拒绝” 机型:OPPO Reno6 Pro 5G os:Coloros 13.0

app卸载重装后仍无法恢复,是个小概率问题

这个问题应该是在13的系统上弹窗的时候没有把存储权限显示出来,只显示了相机照片与视频,跳到权限设置界面里也是,存储的权限是被收在了所有权限里,你看看是不是

@mobilewhj
Copy link

这个人有解决办法,更改下源码,源码那个地方判断有问题#2623

@whatisjava
Copy link

这个人有解决办法,更改下源码,源码那个地方判断有问题#2623

好的那只能源码引入了

@po1xiao
Copy link
Contributor

po1xiao commented Mar 27, 2023

这个人有解决办法,更改下源码,源码那个地方判断有问题#2623

好的那只能源码引入了

可以自己实现OnPermissionsInterceptListener方法来根据版本来移除READ_EXTERNAL_STORAGE,通过setPermissionsInterceptListener来设置OnPermissionsInterceptListener

@whatisjava
Copy link

这个人有解决办法,更改下源码,源码那个地方判断有问题#2623

好的那只能源码引入了

可以自己实现OnPermissionsInterceptListener方法来根据版本来移除READ_EXTERNAL_STORAGE,通过setPermissionsInterceptListener来设置OnPermissionsInterceptListener

你好,我这样设置可以么?
private class OnPermissionsInterceptListenerImpl: OnPermissionsInterceptListener {
override fun requestPermission(fragment: Fragment?, permissionArray: Array?, call: OnRequestPermissionListener?) {
if (permissionArray == null || fragment == null || fragment.context == null) return
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
val result = permissionArray.toMutableList()
if (permissionArray.contains(Manifest.permission.READ_EXTERNAL_STORAGE)) {
result.remove(Manifest.permission.READ_EXTERNAL_STORAGE)
}
call?.onCall(result.toTypedArray(), true)
} else {
call?.onCall(permissionArray, true)
}
}

    override fun hasPermissions(fragment: Fragment?, permissionArray: Array<out String>?): Boolean {
        if (permissionArray == null || fragment == null) return false
        return EasyPermissions.hasPermissions(
            fragment.context,
            *permissionArray.toCompatPermissions
        )
    }
}

@po1xiao
Copy link
Contributor

po1xiao commented Mar 27, 2023

这个人有解决办法,更改下源码,源码那个地方判断有问题#2623

好的那只能源码引入了

可以自己实现OnPermissionsInterceptListener方法来根据版本来移除READ_EXTERNAL_STORAGE,通过setPermissionsInterceptListener来设置OnPermissionsInterceptListener

你好,我这样设置可以么? private class OnPermissionsInterceptListenerImpl: OnPermissionsInterceptListener { override fun requestPermission(fragment: Fragment?, permissionArray: Array?, call: OnRequestPermissionListener?) { if (permissionArray == null || fragment == null || fragment.context == null) return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { val result = permissionArray.toMutableList() if (permissionArray.contains(Manifest.permission.READ_EXTERNAL_STORAGE)) { result.remove(Manifest.permission.READ_EXTERNAL_STORAGE) } call?.onCall(result.toTypedArray(), true) } else { call?.onCall(permissionArray, true) } }

    override fun hasPermissions(fragment: Fragment?, permissionArray: Array<out String>?): Boolean {
        if (permissionArray == null || fragment == null) return false
        return EasyPermissions.hasPermissions(
            fragment.context,
            *permissionArray.toCompatPermissions
        )
    }
}

你可以测测,hasPermissions方法中可能也需要移除READ_EXTERNAL_STORAGE

@whatisjava
Copy link

这个人有解决办法,更改下源码,源码那个地方判断有问题#2623

好的那只能源码引入了

可以自己实现OnPermissionsInterceptListener方法来根据版本来移除READ_EXTERNAL_STORAGE,通过setPermissionsInterceptListener来设置OnPermissionsInterceptListener

你好,我这样设置可以么? private class OnPermissionsInterceptListenerImpl: OnPermissionsInterceptListener { override fun requestPermission(fragment: Fragment?, permissionArray: Array?, call: OnRequestPermissionListener?) { if (permissionArray == null || fragment == null || fragment.context == null) return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { val result = permissionArray.toMutableList() if (permissionArray.contains(Manifest.permission.READ_EXTERNAL_STORAGE)) { result.remove(Manifest.permission.READ_EXTERNAL_STORAGE) } call?.onCall(result.toTypedArray(), true) } else { call?.onCall(permissionArray, true) } }

    override fun hasPermissions(fragment: Fragment?, permissionArray: Array<out String>?): Boolean {
        if (permissionArray == null || fragment == null) return false
        return EasyPermissions.hasPermissions(
            fragment.context,
            *permissionArray.toCompatPermissions
        )
    }
}

你可以测测,hasPermissions方法中可能也需要移除READ_EXTERNAL_STORAGE

试着建了下模拟器,卡得要死,回头找个13的机器试试吧,多谢哥们

@hxqisgirlgod
Copy link

@LuckSiege 伟大的作者啊,急求更新处理一下这个问题啊

@LuckSiege
Copy link
Owner

下版本已修复

@whatisjava
Copy link

下版本已修复

啥时候发布呀,催更哈哈哈

@hxqisgirlgod
Copy link

下版本已修复

牛啊,神仙作者

@LuckSiege
Copy link
Owner

周末更新一下版本

@whatisjava
Copy link

好的多谢

@darkengine
Copy link

亲测如果targetSdkVersion设置成33,运行在Android 13上就会有问题

@hxqisgirlgod
Copy link

@LuckSiege 作者大大,催更啊

@LuckSiege
Copy link
Owner

@henryhong111 晚点就更了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants