【问题标题】:Android studio request permissions code is wrong pls hlpAndroid Studio 请求权限代码错误请帮助
【发布时间】:2023-03-06 17:00:01
【问题描述】:

我在 android studio 中使用 Kotlin 语言。我正在请求访问画廊的权限,当我使用“if-else”结构查询权限并且 requestPermissions 语句上方有一个破折号时,我正在写这个。我们如何解决这个问题。

activity?.let {
        if (ContextCompat.checkSelfPermission(requireActivity().applicationContext,Manifest.permission.READ_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) {
            requestPermissions(arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), 1)

【问题讨论】:

  • 我做不到
  • 当一个方法名有这样的一行时,这意味着该方法已被弃用。从技术上讲,它仍然可以工作,但您应该使用更新的方法。看看答案here
  • IDE 的一个特性告诉你该函数已被弃用。找出替代品。

标签: android kotlin permissions


【解决方案1】:

请求权限的新方法是使用启动器。您必须在 setContent() 之前创建启动器。

在 onCreate 之前的最顶部,创建一个启动器属性:

val storagePermissionLauncher = registerForActivityResult(ActivityResultContracts.startActivityForResult())
{ result->
  if(result.RESULT_CODE == RESULT_OK) {
    //permission granted
    doSomething()
  }
}

当您必须做一些需要许可的事情时。你必须检查你是否有权限:

if(ContextCompat.checkSelfPermission(context, android.Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED){
  //you have the permission
  doSomething()
}else{
//You don't have the permission, ask for it.
  storagePermissionLauncher.launch(android.Manifest.permission.READ_EXTERNAL_STORAGE) 
}

【讨论】:

    猜你喜欢
    • 2016-09-12
    • 1970-01-01
    • 2022-06-14
    • 2016-07-31
    • 2016-08-07
    • 1970-01-01
    • 2017-09-26
    • 2018-01-14
    相关资源
    最近更新 更多