Skip to content

Commit 522b386

Browse files
Merge pull request #11 from AlfredoHdez1709/develop
fix permission
2 parents d8401fc + 1297164 commit 522b386

File tree

2 files changed

+28
-26
lines changed

2 files changed

+28
-26
lines changed

EasyCameraAndGallery/src/main/AndroidManifest.xml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,9 @@
33
xmlns:tools="http://schemas.android.com/tools">
44

55

6-
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
7-
android:maxSdkVersion="28" />
8-
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
9-
android:maxSdkVersion="28" />
10-
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"
11-
android:required="false"/>
6+
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
7+
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
8+
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
129

1310
<uses-permission android:name="android.permission.CAMERA" />
1411

EasyCameraAndGallery/src/main/java/dev/ahrsoft/easycameraandgallery/camera/CameraActivity.kt

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,18 @@ class CameraActivity : AppCompatActivity(), GalleryAdapter.OnItemClickListener {
6868
private var imageCapture: ImageCapture? = null
6969
private lateinit var outputDirectory: File
7070

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+
7183
override fun onCreate(savedInstanceState: Bundle?) {
7284
super.onCreate(savedInstanceState)
7385
binding = ActivityCameraBinding.inflate(layoutInflater)
@@ -297,28 +309,21 @@ class CameraActivity : AppCompatActivity(), GalleryAdapter.OnItemClickListener {
297309
}
298310

299311
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()
308320
}
309-
}
310321

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
322327
}
323328
}
324329

0 commit comments

Comments
 (0)