@@ -68,6 +68,18 @@ class CameraActivity : AppCompatActivity(), GalleryAdapter.OnItemClickListener {
68
68
private var imageCapture: ImageCapture ? = null
69
69
private lateinit var outputDirectory: File
70
70
71
+ private val requestPermissionLauncher = registerForActivityResult(
72
+ ActivityResultContracts .RequestMultiplePermissions ()
73
+ ) { permissions ->
74
+ val allPermissionsGranted = permissions.entries.all { it.value }
75
+ if (allPermissionsGranted) {
76
+ initCameraUI()
77
+
78
+ } else {
79
+ dialogPermission()
80
+ }
81
+ }
82
+
71
83
override fun onCreate (savedInstanceState : Bundle ? ) {
72
84
super .onCreate(savedInstanceState)
73
85
binding = ActivityCameraBinding .inflate(layoutInflater)
@@ -297,28 +309,21 @@ class CameraActivity : AppCompatActivity(), GalleryAdapter.OnItemClickListener {
297
309
}
298
310
299
311
private fun allPermissionsGranted () : Boolean {
300
- return if (VERSION .SDK_INT >= Build .VERSION_CODES .TIRAMISU ) {
301
- REQUIRED_PERMISSIONS_TIRAMISU .all {
302
- ContextCompat .checkSelfPermission(baseContext , it) = = PackageManager .PERMISSION_GRANTED
303
- }
304
- }else {
305
- REQUIRED_PERMISSIONS .all {
306
- ContextCompat .checkSelfPermission(baseContext , it) = = PackageManager .PERMISSION_GRANTED
307
- }
312
+ val permissionsToRequest = if (VERSION .SDK_INT >= Build .VERSION_CODES .TIRAMISU ) {
313
+ REQUIRED_PERMISSIONS_TIRAMISU .filter {
314
+ ContextCompat .checkSelfPermission(this , it) ! = PackageManager .PERMISSION_GRANTED
315
+ }.toTypedArray()
316
+ } else {
317
+ REQUIRED_PERMISSIONS .filter {
318
+ ContextCompat .checkSelfPermission(this , it) ! = PackageManager .PERMISSION_GRANTED
319
+ }.toTypedArray()
308
320
}
309
- }
310
321
311
- override fun onRequestPermissionsResult (
312
- requestCode : Int , permissions : Array <String >, grantResults :
313
- IntArray
314
- ) {
315
- super .onRequestPermissionsResult(requestCode, permissions, grantResults)
316
- if (requestCode == REQUEST_CODE_PERMISSIONS ) {
317
- if (allPermissionsGranted()) {
318
- initCameraUI()
319
- } else {
320
- dialogPermission()
321
- }
322
+ return if (permissionsToRequest.isNotEmpty()) {
323
+ requestPermissionLauncher.launch(permissionsToRequest)
324
+ false
325
+ } else {
326
+ true
322
327
}
323
328
}
324
329
0 commit comments