diff options
author | LuK1337 <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 |
commit | c02478f449c9fdca08fa506b2e7c28bf10cfb149 (patch) | |
tree | b8c2600756f017550f673c54295e0008cc0961c5 | |
parent | 2487a06e12b9a45ddee7de8074123a9b341e3404 (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.kt | 5 | ||||
-rw-r--r-- | app/src/main/java/org/lineageos/aperture/utils/MediaStoreUtils.kt | 39 |
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 + } + } +} |