package com.example.permissionapp
import android.Manifest
import android.content.pm.PackageManager
import android.os.Bundle
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import android.widget.Button
import android.widget.TextView
class PermissionRequestScreen : AppCompatActivity() {
private lateinit var statusTextView: TextView
private lateinit var requestButton: Button
private val requestPermissionLauncher = registerForActivityResult(
ActivityResultContracts.RequestPermission()
) { isGranted: Boolean ->
if (isGranted) {
statusTextView.text = "Status: Granted"
} else {
statusTextView.text = "Status: Denied"
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_permission_request_screen)
statusTextView = findViewById(R.id.statusTextView)
requestButton = findViewById(R.id.requestButton)
updatePermissionStatus()
requestButton.setOnClickListener {
requestPermissionLauncher.launch(Manifest.permission.CAMERA)
}
}
private fun updatePermissionStatus() {
val permissionStatus = ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
statusTextView.text = when (permissionStatus) {
PackageManager.PERMISSION_GRANTED -> "Status: Granted"
PackageManager.PERMISSION_DENIED -> "Status: Denied"
else -> "Status: Unknown"
}
}
}This solution uses registerForActivityResult with RequestPermission to request the camera permission in a modern, recommended way.
We check the current permission status on screen creation and update the status text accordingly.
When the user taps the button, the permission request dialog appears. The result updates the status text to show if permission was granted or denied.
This approach avoids deprecated methods and handles permission flow cleanly.