簡體   English   中英

Android 請求位置權限對話框在不允許后第三次不顯示

[英]Android request Location Permission Dialog doesn't show up third time after don't allow

我有這個簡單的活動,它會彈出位置權限對話框,並根據負面或正面權限對話框按鈕交互清除活動。作為用戶,當我第二次關閉對話框並再次返回應用程序時,對話框不會不再出現,活動馬上結束。 如果未授予權限,我希望每次都顯示權限對話框

override fun onResume() {
    super.onResume()
    setupPermission()
  }

  private fun setupPermission() {
    val permission = PermissionChecker.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)

    if (permission != PackageManager.PERMISSION_GRANTED) {
      permissionsResultCallback.launch(Manifest.permission.ACCESS_FINE_LOCATION)
    } else {
      Log.d("dawg", "already granted")
      finish()
    }
  }

  private val permissionsResultCallback = registerForActivityResult(
    ActivityResultContracts.RequestPermission()) { granted ->
    when (granted) {
      true -> {
        Log.d("dawg", "granted now via dialog")
        finish()
      }
      false -> {
        Log.d("dawg", "denied via dialog")
        finish()
      }
    }
  }

您可以使用shouldShowRequestPermissionRationale 如果用戶第二次拒絕,您可以顯示一個小吃店,用戶可以在其中轉到設置頁面並手動打開通知。

if (shouldShowRequestPermissionRationale(Manifest.permission.CAMERA)) {
                      
                            showSnackBarForOpenSettings(
                                context,
                                "Camera  Permission needed",
                                view
                            )
                       }
                    } else {
                        ActivityCompat.requestPermissions(
                            requireActivity(),
                            arrayOf(android.Manifest.permission.CAMERA), 1
                        )
                    }

要打開應用程序設置屏幕,您可以使用以下命令:

fun Context.openAppSystemSettings() {
        startActivity(Intent().apply {
            action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS
            addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
            data = Uri.fromParts("package", packageName, null)
        })
    }

像這樣使用它context.openAppSystemSettings()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM