Fix permissions issue on Android 13

This commit is contained in:
Matthieu 2022-11-25 18:34:34 +01:00
parent 366410e31c
commit 1d6b3c47e7
2 changed files with 10 additions and 5 deletions

View File

@ -7,7 +7,6 @@
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" />
<uses-feature <uses-feature

View File

@ -9,6 +9,7 @@ import android.content.pm.PackageManager
import android.graphics.Color import android.graphics.Color
import android.graphics.drawable.ColorDrawable import android.graphics.drawable.ColorDrawable
import android.net.Uri import android.net.Uri
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.provider.MediaStore import android.provider.MediaStore
import android.util.DisplayMetrics import android.util.DisplayMetrics
@ -204,14 +205,19 @@ class CameraFragment : BaseFragment() {
// Update gallery thumbnail // Update gallery thumbnail
if (ContextCompat.checkSelfPermission( if (ContextCompat.checkSelfPermission(
requireContext(), requireContext(),
Manifest.permission.READ_EXTERNAL_STORAGE if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) Manifest.permission.READ_MEDIA_IMAGES
else Manifest.permission.READ_EXTERNAL_STORAGE
) == PackageManager.PERMISSION_GRANTED ) == PackageManager.PERMISSION_GRANTED
) { ) {
updateGalleryThumbnail() updateGalleryThumbnail()
} }
else if (!filePermissionDialogLaunched) { else if (!filePermissionDialogLaunched) {
// Ask for external storage permission. // Ask for external storage permission.
updateGalleryThumbnailPermissionLauncher.launch(Manifest.permission.READ_EXTERNAL_STORAGE) updateGalleryThumbnailPermissionLauncher.launch(
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
Manifest.permission.READ_MEDIA_IMAGES
} else Manifest.permission.READ_EXTERNAL_STORAGE
)
} }
cameraLifecycleOwner.resume() cameraLifecycleOwner.resume()
@ -273,14 +279,14 @@ class CameraFragment : BaseFragment() {
// Find the last picture // Find the last picture
val projection = arrayOf( val projection = arrayOf(
MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns._ID,
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) MediaStore.Images.ImageColumns.DATE_TAKEN if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) MediaStore.Images.ImageColumns.DATE_TAKEN
else MediaStore.Images.ImageColumns.DATE_MODIFIED, else MediaStore.Images.ImageColumns.DATE_MODIFIED,
) )
val cursor = requireContext().contentResolver val cursor = requireContext().contentResolver
.query( .query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null,
null, null,
(if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) MediaStore.Images.ImageColumns.DATE_TAKEN (if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) MediaStore.Images.ImageColumns.DATE_TAKEN
else MediaStore.Images.ImageColumns.DATE_MODIFIED) + " DESC" else MediaStore.Images.ImageColumns.DATE_MODIFIED) + " DESC"
) )
if (cursor != null && cursor.moveToFirst()) { if (cursor != null && cursor.moveToFirst()) {