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
}
}