Android12(API31)中,onRequestPermissionsResult无法等待用户输入。
创始人
2024-09-30 18:30:33
0

在Android 12中,onRequestPermissionsResult函数在请求权限时不再等待用户输入,导致在进行多次请求时会出现问题。为了解决这个问题,我们需要手动去实现回调函数,在权限被授权/拒绝的情况下进行适当的处理。

以下是一个实现回调函数的示例代码:

private lateinit var callback: PermissionCallback

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    callback = object : PermissionCallback {
        override fun onPermissionGranted() {
            // 权限已授予
        }

        override fun onPermissionDenied() {
            // 权限被拒绝
        }

        override fun onPermissionDeniedAndNeverAskAgain() {
            // 权限被拒绝,并且勾选了不再询问
        }
    }
}

interface PermissionCallback {
    fun onPermissionGranted()
    fun onPermissionDenied()
    fun onPermissionDeniedAndNeverAskAgain()
}

private fun requestPermission() {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        callback.onPermissionGranted()
        return
    }
    if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
        callback.onPermissionGranted()
    } else {
        with (ActivityResultContracts.RequestPermission()) {
            launch(Manifest.permission.WRITE_EXTERNAL_STORAGE) {
                if (it) {
                    callback.onPermissionGranted()
                } else {
                    if (shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
                        callback.onPermissionDenied()
                    } else {
                        callback.onPermissionDeniedAndNeverAskAgain()
                    }
                }
            }
        }
    }
}

在上面的代码中,我们首先定义了一个PermissionCallback接口和一个回调变量callback用于处理权限的授权结果。在onCreate函数中,我们初始化callback的实现,然后在requestPermission函数中请求文件读写的权限。如果获得了授权,则调用callback的onPermissionGranted方法;如果被拒绝,则调用callback的

相关内容

热门资讯

随着!we poker辅助器,... 随着!we poker辅助器,we poker辅助器下载,学习教程(有挂分享)一、we poker辅...
据统计!wepoker透视方法... 据统计!wepoker透视方法,wepoker透视脚本,资料教程(有挂秘笈)1、据统计!wepoke...
教程辅助挂!wepoker游戏... 教程辅助挂!wepoker游戏下载,aapoker透视方法,绝活儿教程(有挂神器)1、让任何用户在无...
日前!德州真人透视脚本,竞技联... 日前!德州真人透视脚本,竞技联盟辅助插件,策略教程(新版有挂)1、不需要AI权限,帮助你快速的进行德...
插件辅助挂!拱趴大菠萝机器人,... 插件辅助挂!拱趴大菠萝机器人,wpk辅助器,方案教程(有挂秘笈)在进入拱趴大菠萝机器人软件靠谱后,参...
第三方辅助挂!佛手在线是不是有... 第三方辅助挂!佛手在线是不是有挂,约局吧作弊脚本,手段教程(有挂教程)1、进入游戏-大厅左侧-新手福...
今天上午!德普之星辅助器怎么用... 今天上午!德普之星辅助器怎么用,wepoker私局辅助,经验教程(有挂秘籍)1、德普之星辅助器怎么用...
日前!wepoker可以开透视... 日前!wepoker可以开透视吗,hhpkoer辅助器,操作教程(有挂方针)wepoker可以开透视...
网友热议!wpk透视辅助,po... 网友热议!wpk透视辅助,pokernow辅助工具,方式教程(真的有挂)小薇(辅助器软件下载)致您一...
据报道!hhpoker的辅助是... 据报道!hhpoker的辅助是真的吗,werplan免费挂下载,手筋教程(有挂总结)1、打开软件启动...