diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0eec2e6..a17efa3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -17,8 +17,11 @@
     <uses-permission
         android:name="android.permission.CHANGE_OVERLAY_PACKAGES"
         tools:ignore="ProtectedPermissions" />
-    <uses-permission
-        android:name="android.permission.READ_MEDIA_IMAGES" />
+
+    <!-- Devices running Android 13 (API level 33) or higher -->
+    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
+    <!-- To handle the reselection within the app on Android 14 (API level 34) -->
+    <uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />
 
     <application
         android:name=".App"
diff --git a/app/src/main/java/org/omnirom/control/FingerprintSettingsFragment.kt b/app/src/main/java/org/omnirom/control/FingerprintSettingsFragment.kt
index 3d5a0a9..8bf0e73 100644
--- a/app/src/main/java/org/omnirom/control/FingerprintSettingsFragment.kt
+++ b/app/src/main/java/org/omnirom/control/FingerprintSettingsFragment.kt
@@ -17,6 +17,10 @@
  */
 package org.omnirom.control
 
+import android.Manifest.permission.READ_MEDIA_IMAGES
+import android.Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED
+
+import android.Manifest
 import android.app.Activity
 import android.content.ComponentName
 import android.content.Context
@@ -26,6 +30,7 @@
 import android.graphics.BitmapFactory
 import android.graphics.drawable.BitmapDrawable
 import android.net.Uri
+import android.os.Build
 import android.os.Bundle
 import android.os.IBinder
 import android.provider.MediaStore
@@ -43,7 +48,6 @@
 import java.io.FileOutputStream
 import java.io.IOException
 
-
 class FingerprintSettingsFragment : AbstractSettingsFragment() {
     private val TAG = "FingerprintSettingsFragment"
     private val FINGERPRINT_CUSTOM_ICON_SELECT = "custom_fingerprint_icon_select"
@@ -71,7 +75,7 @@
         }
     }
 
-    var pickImageLegacy = registerForActivityResult<String, Uri>(
+    var pickImage = registerForActivityResult<String, Uri>(
         ActivityResultContracts.GetContent()
     ) { uri: Uri? ->
         if (uri != null) {
@@ -93,30 +97,11 @@
         }
     }
 
-    private val pickImage =
-        registerForActivityResult(PickSinglePhotoContract()) { uri ->
-            Log.d(TAG, "pickImage uri = " + uri)
-            if (uri != null) {
-                // TODO we should do some check if the image is even a useful one eg size
-                try {
-                    requireContext().contentResolver.openInputStream(uri).use { inputStream ->
-                        val bitmap = BitmapFactory.decodeStream(inputStream)
-                        systemUIProxy?.setUfpsImageBitmap(bitmap)
-                        savePickerIcon(bitmap)
-                    }
-
-                    Settings.System.putString(
-                        requireContext().contentResolver,
-                        OmniSettings.OMNI_CUSTOM_FP_ICON_UPDATE,
-                        System.currentTimeMillis().toString()
-                    )
-                } catch (e: Exception) {
-                    Log.d(TAG, "pickImage", e);
-                }
-            }
+    private val mImagePermissions =
+        registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) {
+            pickImage.launch("image/*")
         }
 
-
     private val mSystemUIProxyService: ServiceConnection = object : ServiceConnection {
         override fun onServiceConnected(name: ComponentName, service: IBinder) {
             Log.d(
@@ -208,8 +193,7 @@
             }
 
             it.onPreferenceClickListener = Preference.OnPreferenceClickListener {
-                pickImageLegacy.launch("image/*")
-                pickImage.launch(null)
+                mImagePermissions.launch(arrayOf(READ_MEDIA_IMAGES, READ_MEDIA_VISUAL_USER_SELECTED))
                 true
             }
         }
