androidx ActivityResultContracts.RequestPermission在取消请求时似乎存在问题。
创始人
2024-10-12 08:33:02
0

在使用androidx.activity.result.contract.ActivityResultContracts.RequestPermission时,可能会遇到在取消请求时存在问题的情况。以下是一个包含代码示例的解决方法:

  1. 首先,在您的Activity或Fragment中声明一个ActivityResultLauncher实例,用于处理权限请求的结果。例如:
private ActivityResultLauncher requestPermissionLauncher = registerForActivityResult(
    new ActivityResultContracts.RequestPermission(), result -> {
        if (result) {
            // 权限已授予
            // 执行相关操作
        } else {
            // 权限被拒绝
            // 执行相关操作
        }
    });
  1. 在需要请求权限的地方,使用requestPermissionLauncher来发起权限请求。例如:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
        == PackageManager.PERMISSION_GRANTED) {
    // 权限已授予
    // 执行相关操作
} else if (shouldShowRequestPermissionRationale(Manifest.permission.CAMERA)) {
    // 显示权限解释对话框
    new AlertDialog.Builder(this)
            .setTitle("权限请求")
            .setMessage("我们需要相机权限以进行拍照操作。")
            .setPositiveButton("授予", (dialog, which) -> {
                // 请求权限
                requestPermissionLauncher.launch(Manifest.permission.CAMERA);
            })
            .setNegativeButton("取消", null)
            .show();
} else {
    // 直接请求权限
    requestPermissionLauncher.launch(Manifest.permission.CAMERA);
}

通过以上步骤,您可以正确处理权限请求的结果,包括用户授予权限或拒绝权限的情况。

相关内容

热门资讯

Android Recycle... 要在Android RecyclerView中实现滑动卡片效果,可以按照以下步骤进行操作:首先,在项...
安装apache-beam==... 出现此错误可能是因为用户的Python版本太低,而apache-beam==2.34.0需要更高的P...
Android - 无法确定任... 这个错误通常发生在Android项目中,表示编译Debug版本的Java代码时出现了依赖关系问题。下...
Android - NDK 预... 在Android NDK的构建过程中,LOCAL_SRC_FILES只能包含一个项目。如果需要在ND...
Akka生成Actor问题 在Akka框架中,可以使用ActorSystem对象生成Actor。但是,当我们在Actor类中尝试...
Agora-RTC-React... 出现这个错误原因是因为在 React 组件中使用,import AgoraRTC from “ago...
Alertmanager在pr... 首先,在Prometheus配置文件中,确保Alertmanager URL已正确配置。例如:ale...
Aksnginxdomainb... 在AKS集群中,可以使用Nginx代理服务器实现根据域名进行路由。以下是具体步骤:部署Nginx i...
AddSingleton在.N... 在C#中创建Singleton对象通常是通过私有构造函数和静态属性来实现,例如:public cla...
Alertmanager中的基... Alertmanager中可以使用repeat_interval选项指定在一个告警重复发送前必须等待...