diff --git a/app/build.gradle b/app/build.gradle index e3031efb..d797ef03 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,6 +19,8 @@ android { minSdkVersion 14 // Android 4.0 Ice Cream Sandwich (API 14); Android 4.4 KitKat (API 19); Android 5.0 Lollipop (API 21); // Android 6.0 Marshmallow (API 23); Android 7.0 Nougat (API 24) + maxSdkVersion 28 // #155: android-10=api29 + targetSdkVersion 21 // non-fdroid release diff --git a/app/src/main/java/de/k3b/android/androFotoFinder/AndroFotoFinderApp.java b/app/src/main/java/de/k3b/android/androFotoFinder/AndroFotoFinderApp.java index f516d93c..00ba24d7 100644 --- a/app/src/main/java/de/k3b/android/androFotoFinder/AndroFotoFinderApp.java +++ b/app/src/main/java/de/k3b/android/androFotoFinder/AndroFotoFinderApp.java @@ -94,16 +94,16 @@ public static String getGetTeaserText(Context context, String linkUrlForDetails) public static void setMediaImageDbReplacement(Context context, boolean useMediaImageDbReplacement) { final IMediaRepositoryApi oldMediaDBApi = FotoSql.getMediaDBApi(); - if ((oldMediaDBApi == null) || (Global.useMediaImageDbReplacement != useMediaImageDbReplacement)) { + if ((oldMediaDBApi == null) || (Global.useAo10MediaImageDbReplacement != useMediaImageDbReplacement)) { // menu must be recreated LocalizedActivity.setMustRecreate(); - Global.useMediaImageDbReplacement = useMediaImageDbReplacement; + Global.useAo10MediaImageDbReplacement = useMediaImageDbReplacement; final MediaContentproviderRepository mediaContentproviderRepository = new MediaContentproviderRepository(context); - if (Global.useMediaImageDbReplacement) { + if (Global.useAo10MediaImageDbReplacement) { final SQLiteDatabase writableDatabase = DatabaseHelper.getWritableDatabase(context); final MediaDBRepository mediaDBRepository = new MediaDBRepository(writableDatabase); FotoSql.setMediaDBApi(new MergedMediaRepository(mediaDBRepository, mediaContentproviderRepository)); diff --git a/app/src/main/java/de/k3b/android/androFotoFinder/FotoGalleryActivity.java b/app/src/main/java/de/k3b/android/androFotoFinder/FotoGalleryActivity.java index f14871b1..736386e3 100644 --- a/app/src/main/java/de/k3b/android/androFotoFinder/FotoGalleryActivity.java +++ b/app/src/main/java/de/k3b/android/androFotoFinder/FotoGalleryActivity.java @@ -168,7 +168,7 @@ public boolean onCreateOptionsMenu(Menu menu) { inflater.inflate(R.menu.menu_gallery_non_selected_only, menu); inflater.inflate(R.menu.menu_gallery_non_multiselect, menu); - if (Global.useMediaImageDbReplacement) { + if (Global.useAo10MediaImageDbReplacement) { inflater.inflate(R.menu.menu_ao10, menu); } diff --git a/app/src/main/java/de/k3b/android/androFotoFinder/Global.java b/app/src/main/java/de/k3b/android/androFotoFinder/Global.java index 21a12bb7..426157a8 100644 --- a/app/src/main/java/de/k3b/android/androFotoFinder/Global.java +++ b/app/src/main/java/de/k3b/android/androFotoFinder/Global.java @@ -20,6 +20,7 @@ package de.k3b.android.androFotoFinder; import android.content.Context; +import android.os.Build; import android.os.Environment; import android.util.Log; import android.view.Menu; @@ -124,17 +125,23 @@ public static class Media { public static boolean initialImageDetailResolutionHigh = false; // false: MediaStore.Images.Thumbnails.MINI_KIND; true: FULL_SCREEN_KIND; public static boolean mapsForgeEnabled = false; + // #155: Feature-Toggel: set to false while android10 incompatibility is not fixed + public final static boolean allow_emulate_ao10 = !isAndroid10OrAbove() && false; // #155: fix android10 incompatibility // Build.VERSION_CODES.??ANDROID10?? = 29 - //!!! - public static boolean useMediaImageDbReplacement = true; + public static boolean useAo10MediaImageDbReplacement = isAndroid10OrAbove(); -// public static final boolean useMediaImageDbReplacement = (Build.VERSION.SDK_INT >= 29); /** map with blue selection markers: how much to area to increase */ public static final double mapMultiselectionBoxIncreaseByProcent = 100.0; /** map with blue selection markers: minimum size of zoom box in degrees */ public static final double mapMultiselectionBoxIncreaseMinSizeInDegrees = 0.01; + private static boolean isAndroid10OrAbove() { + // #155: fix android10 incompatibility + // Build.VERSION_CODES.??ANDROID10?? = 29 + return Build.VERSION.SDK_INT >= 29; + } + public static void debugMemory(String modul, String message) { if (Global.debugEnabledMemory) { Runtime r = Runtime.getRuntime(); diff --git a/app/src/main/java/de/k3b/android/androFotoFinder/SettingsActivity.java b/app/src/main/java/de/k3b/android/androFotoFinder/SettingsActivity.java index bfce1029..64f7ea55 100644 --- a/app/src/main/java/de/k3b/android/androFotoFinder/SettingsActivity.java +++ b/app/src/main/java/de/k3b/android/androFotoFinder/SettingsActivity.java @@ -53,6 +53,7 @@ import uk.co.senab.photoview.log.LogManager; public class SettingsActivity extends PreferenceActivity { + private static final String PREF_KEY_USE_MEDIA_IMAGE_DB_REPLACEMENT = "useMediaImageDbReplacement"; private static Boolean sOldEnableNonStandardIptcMediaScanner = null; private SharedPreferences prefsInstance = null; private ListPreference defaultLocalePreference; // #21: Support to change locale at runtime @@ -92,7 +93,9 @@ public static void global2Prefs(Context context) { prefs.putBoolean("xmp_file_schema_long", LibGlobal.preferLongXmpFormat); prefs.putBoolean("mapsForgeEnabled", Global.mapsForgeEnabled); - prefs.putBoolean("useMediaImageDbReplacement", Global.useMediaImageDbReplacement); + if (Global.allow_emulate_ao10) { + prefs.putBoolean(PREF_KEY_USE_MEDIA_IMAGE_DB_REPLACEMENT, Global.useAo10MediaImageDbReplacement); + } prefs.putBoolean("locked", Global.locked); prefs.putString("passwordHash", Global.passwordHash); @@ -172,7 +175,12 @@ public static void prefs2Global(Context context) { LibGlobal.preferLongXmpFormat = getPref(prefs, "xmp_file_schema_long", LibGlobal.preferLongXmpFormat); Global.mapsForgeEnabled = getPref(prefs, "mapsForgeEnabled", Global.mapsForgeEnabled); - AndroFotoFinderApp.setMediaImageDbReplacement(context.getApplicationContext(), getPref(prefs, "useMediaImageDbReplacement", Global.useMediaImageDbReplacement)); + + boolean useAo10MediaImageDbReplacement = Global.useAo10MediaImageDbReplacement; + if (Global.allow_emulate_ao10) { + useAo10MediaImageDbReplacement = getPref(prefs, PREF_KEY_USE_MEDIA_IMAGE_DB_REPLACEMENT, Global.useAo10MediaImageDbReplacement); + } + AndroFotoFinderApp.setMediaImageDbReplacement(context.getApplicationContext(), useAo10MediaImageDbReplacement); Global.imageDetailThumbnailIfBiggerThan = getPref(prefs, "imageDetailThumbnailIfBiggerThan" , Global.imageDetailThumbnailIfBiggerThan); @@ -232,7 +240,9 @@ protected void onCreate(final Bundle savedInstanceState) { } this.addPreferencesFromResource(R.xml.preferences); - this.addPreferencesFromResource(R.xml.preferences); + if (Global.allow_emulate_ao10) { + this.addPreferencesFromResource(R.xml.preferences_ao10_test); + } prefsInstance = PreferenceManager .getDefaultSharedPreferences(this); global2Prefs(this.getApplication()); diff --git a/app/src/main/java/de/k3b/android/androFotoFinder/queries/CursorLoaderWithException.java b/app/src/main/java/de/k3b/android/androFotoFinder/queries/CursorLoaderWithException.java index 4c68bd79..8e114514 100644 --- a/app/src/main/java/de/k3b/android/androFotoFinder/queries/CursorLoaderWithException.java +++ b/app/src/main/java/de/k3b/android/androFotoFinder/queries/CursorLoaderWithException.java @@ -63,7 +63,7 @@ public Cursor loadInBackground() { try { Cursor cursor; - cursor = FotoSql.getMediaDBApi().createCursorForQuery(null, "loadader", this.query, null, mCancellationSignal); + cursor = FotoSql.getMediaDBApi().createCursorForQuery(null, "loader", this.query, null, mCancellationSignal); if (cursor != null) { try { // Ensure the cursor window is filled. diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 343f0a22..85fd213e 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -1,6 +1,6 @@ + + + + + + + +