diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt index 4db22c801..d4a255950 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt @@ -277,8 +277,18 @@ class FileDatabaseSelectActivity : StylishActivity(), // Construct adapter with listeners if (PreferencesUtil.showRecentFiles(this)) { mFileDatabaseHistoryAction?.getAllFileDatabaseHistories { databaseFileHistoryList -> - databaseFileHistoryList?.let { - mAdapterDatabaseHistory?.addDatabaseFileHistoryList(it) + databaseFileHistoryList?.let { historyList -> + val hideBrokenLocations = PreferencesUtil.hideBrokenLocations(this@FileDatabaseSelectActivity) + mAdapterDatabaseHistory?.addDatabaseFileHistoryList( + // Show only uri accessible + historyList.filter { + if (hideBrokenLocations) { + UriUtil.parse(it.databaseUri)?.let { historyUri -> + UriUtil.isUriAccessible(contentResolver, historyUri) + } ?: false + } else + true + }) mAdapterDatabaseHistory?.notifyDataSetChanged() updateFileListVisibility() } diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt b/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt index 7f6292a37..c86b90c55 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt +++ b/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt @@ -40,6 +40,12 @@ object PreferencesUtil { context.resources.getBoolean(R.bool.show_recent_files_default)) } + fun hideBrokenLocations(context: Context): Boolean { + val prefs = PreferenceManager.getDefaultSharedPreferences(context) + return prefs.getBoolean(context.getString(R.string.hide_broken_locations_key), + context.resources.getBoolean(R.bool.hide_broken_locations_default)) + } + fun rememberKeyFileLocations(context: Context): Boolean { val prefs = PreferenceManager.getDefaultSharedPreferences(context) return prefs.getBoolean(context.getString(R.string.remember_keyfile_locations_key), diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index 2fa7ac8a3..59c422441 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -87,6 +87,8 @@ true show_recent_files_key true + hide_broken_locations_key + true remember_keyfile_locations_key true advanced_unlock_explanation_key diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0cce652f0..fe7815e98 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -207,6 +207,8 @@ Remember the location of databases Show recent files Show locations of recent databases + Hide broken database links + Hide broken links in the list of recent databases Save location of keyfiles Remember the location of databases keyfiles Root diff --git a/app/src/main/res/xml/preferences_application.xml b/app/src/main/res/xml/preferences_application.xml index 1db4692f6..1c779f2df 100644 --- a/app/src/main/res/xml/preferences_application.xml +++ b/app/src/main/res/xml/preferences_application.xml @@ -131,6 +131,12 @@ android:summary="@string/show_recent_files_summary" android:dependency="@string/remember_database_locations_key" android:defaultValue="@bool/show_recent_files_default"/> +