summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuK1337 <priv.luk@gmail.com>2023-03-26 17:56:01 +0200
committerƁukasz Patron <priv.luk@gmail.com>2023-03-27 13:43:18 +0200
commitc02478f449c9fdca08fa506b2e7c28bf10cfb149 (patch)
treeb8c2600756f017550f673c54295e0008cc0961c5
parent2487a06e12b9a45ddee7de8074123a9b341e3404 (diff)
Aperture: Ignore already deleted last saved uri
Test: * Take a photo * Trash it in Google Photos * Notice that it's not shown in Aperture * Take another photo * Delete it permanently in Google Photos * Notice that it's also not shown in Aperture Change-Id: I10c1b70e822c5dfe9e5866bdc15b7a3a81bb43ba
-rw-r--r--app/src/main/java/org/lineageos/aperture/CameraActivity.kt5
-rw-r--r--app/src/main/java/org/lineageos/aperture/utils/MediaStoreUtils.kt39
2 files changed, 43 insertions, 1 deletions
diff --git a/app/src/main/java/org/lineageos/aperture/CameraActivity.kt b/app/src/main/java/org/lineageos/aperture/CameraActivity.kt
index 96f02bf..d6fca81 100644
--- a/app/src/main/java/org/lineageos/aperture/CameraActivity.kt
+++ b/app/src/main/java/org/lineageos/aperture/CameraActivity.kt
@@ -97,6 +97,7 @@ import org.lineageos.aperture.utils.FlashMode
import org.lineageos.aperture.utils.Framerate
import org.lineageos.aperture.utils.GoogleLensUtils
import org.lineageos.aperture.utils.GridMode
+import org.lineageos.aperture.utils.MediaStoreUtils
import org.lineageos.aperture.utils.MediaType
import org.lineageos.aperture.utils.PermissionsUtils
import org.lineageos.aperture.utils.Rotation
@@ -1638,7 +1639,9 @@ open class CameraActivity : AppCompatActivity() {
private fun updateGalleryButton() {
runOnUiThread {
- val uri = sharedPreferences.lastSavedUri
+ val uri = sharedPreferences.lastSavedUri?.takeIf {
+ MediaStoreUtils.fileExists(this, it)
+ }
val keyguardLocked = keyguardManager.isKeyguardLocked
if (uri != null && (!keyguardLocked || tookSomething)) {
galleryButton.load(uri) {
diff --git a/app/src/main/java/org/lineageos/aperture/utils/MediaStoreUtils.kt b/app/src/main/java/org/lineageos/aperture/utils/MediaStoreUtils.kt
new file mode 100644
index 0000000..5029795
--- /dev/null
+++ b/app/src/main/java/org/lineageos/aperture/utils/MediaStoreUtils.kt
@@ -0,0 +1,39 @@
+/*
+ * SPDX-FileCopyrightText: 2023 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.lineageos.aperture.utils
+
+import android.content.ContentResolver
+import android.content.ContentUris
+import android.content.Context
+import android.net.Uri
+import android.os.Bundle
+import android.provider.MediaStore
+
+object MediaStoreUtils {
+ fun fileExists(context: Context, uri: Uri): Boolean {
+ context.contentResolver.query(
+ MediaStore.Files.getContentUri("external"),
+ arrayOf(MediaStore.Files.FileColumns._ID),
+ Bundle().apply {
+ // Limit
+ putInt(ContentResolver.QUERY_ARG_LIMIT, 1)
+
+ // Selection
+ putString(
+ ContentResolver.QUERY_ARG_SQL_SELECTION,
+ MediaStore.MediaColumns._ID + "=?"
+ )
+ putStringArray(
+ ContentResolver.QUERY_ARG_SQL_SELECTION_ARGS,
+ arrayOf(ContentUris.parseId(uri).toString())
+ )
+ },
+ null
+ ).use {
+ return it != null && it.count > 0
+ }
+ }
+}