[英]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.