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"/>
+