OmniControl: use ActivityResultContracts.GetContent for fp image pickers

Android 13 picker is nice and all but it only allows
selecting certain images

Change-Id: I02c46b90acc28453fc3cf49d2eec0c0e9a734abc
diff --git a/app/src/main/java/org/omnirom/control/FingerprintSettingsFragment.kt b/app/src/main/java/org/omnirom/control/FingerprintSettingsFragment.kt
index 0245d50..5c5d5b5 100644
--- a/app/src/main/java/org/omnirom/control/FingerprintSettingsFragment.kt
+++ b/app/src/main/java/org/omnirom/control/FingerprintSettingsFragment.kt
@@ -24,15 +24,12 @@
 import android.content.ServiceConnection
 import android.graphics.Bitmap
 import android.graphics.BitmapFactory
-import android.graphics.Color
 import android.graphics.drawable.BitmapDrawable
-import android.graphics.drawable.ColorDrawable
 import android.net.Uri
 import android.os.Bundle
 import android.os.IBinder
 import android.provider.MediaStore
 import android.provider.Settings
-import android.text.TextUtils
 import android.util.Log
 import androidx.activity.result.contract.ActivityResultContract
 import androidx.activity.result.contract.ActivityResultContracts
@@ -43,6 +40,7 @@
 import com.android.systemui.shared.omni.IOmniSystemUiProxy
 import java.io.File
 import java.io.FileOutputStream
+import java.io.IOException
 
 
 class FingerprintSettingsFragment : AbstractSettingsFragment() {
@@ -72,6 +70,28 @@
         }
     }
 
+    var pickImageLegacy = registerForActivityResult<String, Uri>(
+        ActivityResultContracts.GetContent()
+    ) { uri: Uri? ->
+        if (uri != null) {
+            try {
+                requireContext().contentResolver.openInputStream(uri).use { inputStream ->
+                    val bitmap = BitmapFactory.decodeStream(inputStream)
+                    systemUIProxy?.setUfpsImageBitmap(bitmap)
+                    savePickerIcon(bitmap)
+                }
+
+                Settings.System.putString(
+                    requireContext().contentResolver,
+                    Settings.System.OMNI_CUSTOM_FP_ICON_UPDATE,
+                    System.currentTimeMillis().toString()
+                )
+            } catch (e: Exception) {
+                Log.d(TAG, "pickImage", e);
+            }
+        }
+    }
+
     private val pickImage =
         registerForActivityResult(PickSinglePhotoContract()) { uri ->
             Log.d(TAG, "pickImage uri = " + uri)
@@ -187,7 +207,8 @@
             }
 
             it.onPreferenceClickListener = Preference.OnPreferenceClickListener {
-                pickImage.launch(null)
+                pickImageLegacy.launch("image/*")
+                //pickImage.launch(null)
                 true
             }
         }