Update errors category and fix small sentences

Jérémy JAMET
2025-11-19 13:17:14 +01:00
parent d634f08df4
commit 7ced07a3d7

@@ -20,11 +20,14 @@ Native synchronization of KeePass files makes it possible to update the data of
## File Synchronization
**Retrieving the database binary file from a predefined shared location is the first step but is not the responsibility of KeePassDX.**
KeePassDX was designed and created to be only a _**file editor**_. The architecture of the Android system is built in such a way that a dedicated application manages to send and receive the files and then propose them through a [URI](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier).
Many people blame it when most of the file synchronization problems are caused by the cloud application used because it doesn't handle file conflicts or has caching problems. See the [table below](https://github.com/Kunzisoft/KeePassDX/wiki/File-Manager-and-Sync#compatibility) for more explanations. **_The creation of a new file app fully compatible with open protocols and cloud clients is under study. (Dedicated app sync project : https://github.com/Kunzisoft/FileSync)_**
Many people blame it when most of the file synchronization problems are caused by the cloud application used because it doesn't handle file conflicts or has caching problems. See the [table below](https://github.com/Kunzisoft/KeePassDX/wiki/File-Manager-and-Sync#compatibility) for more explanations, so **choose your file manager carefully and make regular database file [backups](https://github.com/Kunzisoft/KeePassDX/wiki/Backup#keepass-database-backup)**.
For more information on why not to integrate directly the Cloud APIs: [#342](https://github.com/Kunzisoft/KeePassDX/issues/342)
_The creation of a new file app fully compatible with open protocols and cloud clients is under study. (Dedicated app sync project : https://github.com/Kunzisoft/FileSync)_
_For more information on why not to integrate directly the Cloud APIs: [#342](https://github.com/Kunzisoft/KeePassDX/issues/342) and [#897](https://github.com/Kunzisoft/KeePassDX/issues/897)_
## Data Synchronization
@@ -52,7 +55,59 @@ In addition to the commands described above, it is possible to use more advanced
KeePassDX communicates with a separate file manager, or cloud clients that can be online or offline, the goal is to encapsulate the components, in the philosophy of Open Source software with the best security possible.
**Important note: in many third-party applications, you have to select your database files from the desired app and not from KeePassDX because does not offer integration with the pre-installed file manager. Ask the developer of your favorite cloud application if you want this feature.**
*Note: in many third-party applications, you have to select your database files from the desired app and not from KeePassDX because the third-party app or your operating system does not offer integration with the pre-installed file manager.*
# File Manager application
## Open document action
By default, KeePassDX will attempt to keep a **URI active for as long as possible** in order to maintain access to a file depending on the file manager used.
- **Briefly press the `Open existing vault` button** to open a file using the open document action.
_This method is less compatible with cloud applications that, for the majority, do not correctly handle persistent URIs and may not be offered visually depending on your operating system._
<img width="400" alt="File manager ACTION_OPEN_DOCUMENT" src="https://github.com/user-attachments/assets/c2576f53-3e5a-450d-8ad8-110d72409a83" />
## Get content action
If you want to **maximize openness compatibility with a cloud app**:
- **Press and hold the `Open existing vault` button** to open a file using the get content action.
_With this method, the file's URI will explicitly become invalid after a certain amount of time, and you will need to select it again from its location._
<img width="400" alt="File manager ACTION_GET_CONTENT" src="https://github.com/user-attachments/assets/91ef938a-14fc-42de-b37f-74ef7efc9857" />
## File manager list
_The table below shows the behaviors displayed for an opening with the default document opening action._
**This list is not exhaustive and may not be up to date. Please refer to the relevant project linked to the file manager you are using for more information.**
| File manager / cloud client app | Works | Pros | Cons | Officially tested
| - | - | - | - | - |
| Files (`DocumentsUI`) | Integrated by default with almost all systems (but is sometimes hidden to users). Keeps track of the last visited folder. _Note: Full integration applies to local files, and only to cloud files provided by compatible apps (i.e. GDrive, see below)._ <br/><br/>`content://com.android.externalstorage.documents/` | [Open source](https://android.googlesource.com/platform/packages/apps/DocumentsUI/+/refs/heads/master) in AOSP code | - | Yes
| [Anemo](https://f-droid.org/packages/exe.bbllw8.anemo/) | Yes | [Open source](https://github.com/2bllw8/anemo), private local storage with time access, very well maintained | - | Yes
| [Material Files](https://f-droid.org/en/packages/me.zhanghai.android.files/) | Yes <br/>May cause [permission issues](https://github.com/Kunzisoft/KeePassDX/issues/1721) in FTP.<br/><br/>`content://me.zhanghai.android.files.file_provider/` | [Open source](https://github.com/zhanghai/MaterialFiles), connection to an FTP server, very well maintained | - | Yes
| [RCX](https://f-droid.org/en/packages/io.github.x0b.rcx/) | ? | [Open source](https://github.com/x0b/rcx), easy to use, connections to a large amount of remote services (Clouds, HTTP, FTP, SFTP, WebDAV). | Contains proprietary APIs | No
| [Mixplorer](https://mixplorer.com/) | Does not provide the correct file date metadata, which displays the modification popup each time a database is opened. May lose the URI connection to the database file, in which case it must be reselected from MixPlorer app. <br/><br/>`content://com.mixplorer.file/` | Easy to use, connections to a large amount of protocols and almost all cloud storage (Clouds, SAMBA, FTP, SFTP, WebDAV) | Closed source code, may prevent save depending on source | No
| [NextCloud](https://f-droid.org/en/packages/com.nextcloud.client/) | Yes if integrated with de default File app. Revokes the file while synchronized data is recovered. Pressing the back button and reselecting the database solves the issue. | [Open source](https://github.com/nextcloud/android) | More difficult to set up for a private server | No
| [OwnCloud](https://f-droid.org/en/packages/com.owncloud.android/) | - | [Open source](https://github.com/owncloud/android) | More difficult to set up for a private server | No
| [Google Drive](https://play.google.com/store/apps/details?id=com.google.android.apps.docs) | Partially if integrated with default File app. Data loss can happen when file is updated from somewhere else. The links expire after a time, and does not work when the network connections are turned off. In the case of a persistent or non-updating database, it is necessary to clear the cache of the Google Drive app. <br/><br/> Alternatively, [the app DriveSync can be used](https://github.com/Kunzisoft/KeePassDX/issues/1407#issuecomment-2069047791) to integrate GoogleDrive without caching errors. <br/><br/>A [bug](https://issuetracker.google.com/issues/180526528) does not allow to open the file in "wt" mode.<br/><br/>`content://com.google.android.apps.docs.storage/`<br/>`content://com.google.android.apps.docs.storage.legacy/` | Easy to use | Closed source code, proprietary license | No
| [Dropbox](https://play.google.com/store/apps/details?id=com.dropbox.android) | Succinctly, read and write with Android 10, only read with Android 8 (stops the file stream). Not integrated. Breaks the file link systematically ([issue](https://www.dropboxforum.com/t5/Discuss-Developer-API/why-using-Intent-ACTION-OPEN-DOCUMENT-does-not-list-the-Dropbox/td-p/209654)). Can prevent file writing with read only mode. Using the "Make available offline" option on the Dropbox app allows to better manage synchronization and cache problems. https://help.dropbox.com/sync/access-files-offline | - | Closed source code, proprietary license | Yes 194.2.4
| [OneDrive](https://play.google.com/store/apps/details?id=com.microsoft.skydrive) | URIs appear to be reassigned to other files once revoked. This results in an attempt to open files that are not databases. Seems to delete data if the state of OneDrive is not correct, corrupts data when the file is selected from OneDrive. In the case of a persistent or non-updating database, it is necessary to clear the cache of the OneDrive app.<br/><br/>`content://com.microsoft.skydrive.content.StorageAccessProvider/` | - | Closed source code, proprietary license | No
| [PCloud](https://play.google.com/store/apps/details?id=com.pcloud.pcloud) | Does not allow save of the database file, integrated with default File app <br /><br />`content://com.pcloud.pcloud.documents/` | - | Closed source code, proprietary license | Yes (2.13.1)
| [Samsung "My Files"](https://play.google.com/store/apps/details?id=com.sec.android.app.myfiles) | Breaks the file link after a file modification | - | Closed source code, proprietary license | No
| [CX Explorer](https://play.google.com/store/apps/details?id=com.cxinventor.file.explorer) | Does not automatically recognize mime type ("Other" must be selected) | Allows connection to common clouds and protocols (FTP, SFTP, WebDAV) | Closed source code, proprietary license | Yes (1.4.6)
# Synchronization application
In addition, there are applications that synchronize files on a continuous basis. This allows you to retrieve and send files transparently in the background when a file is updated. Very useful if your file manager does not have this feature.
| Sync app | Pros | Cons | Officially tested
| --- | --- | --- | --- |
| [Syncthing](https://github.com/catfriend1/syncthing-android) | Widely used open source application that allows decentralized synchronization. <br/><br/> _**Warning**: some users have noticed corruptions when Syncthing was synchronized at the same time as a data save because the URI stream is cuts by the sync. Please make sure that the two actions are not done at the same time, you can disable the automatic save and remember to make regular manual backups._ <br/><br/> Tutorials : <br/> [Peter Babič](https://peterbabic.dev/blog/sync-keepass-passwords-between-computer-phone/) <br/> [TroubleChute (video)](https://www.youtube.com/watch?v=DyDEIavz0X4) | - | No
# Errors
## File access revocation
@@ -90,57 +145,10 @@ Many cloud file managers have an internal cache and the file may end up in error
**KeePassDX does not have a cache at this level and is not responsible if the data sent by the manager is not up to date, so there is no point in making a bug resolution request on KeePassDX. Keep in mind that the basic problem is not with KeePassDX and that it is up to the file managers apps to solve their caching and revocation issues.**
In order to have the most complete visibility of the file services that work with KeePass, you can leave comments to indicate whether your file app or your cloud client is fully working or not.
***
# Synchronization application
## Corrupted database
In addition, there are applications that synchronize files on a continuous basis. This allows you to retrieve and send files transparently in the background when a file is updated. Very useful if your file manager does not have this feature.
| Sync app | Pros | Cons | Officially tested
| --- | --- | --- | --- |
| [Syncthing](https://github.com/catfriend1/syncthing-android) | Widely used open source application that allows decentralized synchronization. <br/><br/> _**Warning**: some users have noticed corruptions when Syncthing was synchronized at the same time as a data save because the URI stream is cuts by the sync. Please make sure that the two actions are not done at the same time, you can disable the automatic save and remember to make regular manual backups._ <br/><br/> Tutorials : <br/> [Peter Babič](https://peterbabic.dev/blog/sync-keepass-passwords-between-computer-phone/) <br/> [TroubleChute (video)](https://www.youtube.com/watch?v=DyDEIavz0X4) | - | No
# File Manager application
## Open document action
By default, KeePassDX will attempt to keep a **URI active for as long as possible** in order to maintain access to a file depending on the file manager used.
To do this, **briefly press the `Open existing vault` button** to open your device's "files" app using the open document action.
_This method is less compatible with cloud applications that, for the majority, do not correctly handle persistent URIs and may not be offered visually depending on your operating system._
<img width="400" alt="File manager ACTION_OPEN_DOCUMENT" src="https://github.com/user-attachments/assets/c2576f53-3e5a-450d-8ad8-110d72409a83" />
## Get content action
If you want to **maximize openness compatibility with a cloud app**, you can explicitly ask KeePassDX to open a file using the get content action by **long pressing the `Open existing vault` button**.
_With this method, the file's URI will explicitly become invalid after a certain amount of time, and you will need to select it again from its location._
<img width="400" alt="File manager ACTION_GET_CONTENT" src="https://github.com/user-attachments/assets/91ef938a-14fc-42de-b37f-74ef7efc9857" />
## Compatibility
_The table below shows the behaviors displayed for an opening with the default document opening action._
| File manager / cloud client app | Works | Pros | Cons | Officially tested
| - | - | - | - | - |
| Files (`DocumentsUI`) | Integrated by default with almost all systems (but is sometimes hidden to users). Keeps track of the last visited folder. _Note: Full integration applies to local files, and only to cloud files provided by compatible apps (i.e. GDrive, see below)._ <br/><br/>`content://com.android.externalstorage.documents/` | [Open source](https://android.googlesource.com/platform/packages/apps/DocumentsUI/+/refs/heads/master) in AOSP code | - | Yes
| [Anemo](https://f-droid.org/packages/exe.bbllw8.anemo/) | Yes | [Open source](https://github.com/2bllw8/anemo), private local storage with time access, very well maintained | - | Yes
| [Material Files](https://f-droid.org/en/packages/me.zhanghai.android.files/) | Yes <br/>May cause [permission issues](https://github.com/Kunzisoft/KeePassDX/issues/1721) in FTP.<br/><br/>`content://me.zhanghai.android.files.file_provider/` | [Open source](https://github.com/zhanghai/MaterialFiles), connection to an FTP server, very well maintained | - | Yes
| [RCX](https://f-droid.org/en/packages/io.github.x0b.rcx/) | ? | [Open source](https://github.com/x0b/rcx), easy to use, connections to a large amount of remote services (Clouds, HTTP, FTP, SFTP, WebDAV). | Contains proprietary APIs | No
| [Mixplorer](https://mixplorer.com/) | Does not provide the correct file date metadata, which displays the modification popup each time a database is opened. May lose the URI connection to the database file, in which case it must be reselected from MixPlorer app. <br/><br/>`content://com.mixplorer.file/` | Easy to use, connections to a large amount of protocols and almost all cloud storage (Clouds, SAMBA, FTP, SFTP, WebDAV) | Closed source code, may prevent save depending on source | No
| [NextCloud](https://f-droid.org/en/packages/com.nextcloud.client/) | Yes if integrated with de default File app. Revokes the file while synchronized data is recovered. Pressing the back button and reselecting the database solves the issue. | [Open source](https://github.com/nextcloud/android) | More difficult to set up for a private server | No
| [OwnCloud](https://f-droid.org/en/packages/com.owncloud.android/) | - | [Open source](https://github.com/owncloud/android) | More difficult to set up for a private server | No
| [Google Drive](https://play.google.com/store/apps/details?id=com.google.android.apps.docs) | Partially if integrated with default File app. Data loss can happen when file is updated from somewhere else. The links expire after a time, and does not work when the network connections are turned off. In the case of a persistent or non-updating database, it is necessary to clear the cache of the Google Drive app. <br/><br/> Alternatively, [the app DriveSync can be used](https://github.com/Kunzisoft/KeePassDX/issues/1407#issuecomment-2069047791) to integrate GoogleDrive without caching errors. <br/><br/>A [bug](https://issuetracker.google.com/issues/180526528) does not allow to open the file in "wt" mode.<br/><br/>`content://com.google.android.apps.docs.storage/`<br/>`content://com.google.android.apps.docs.storage.legacy/` | Easy to use | Closed source code, proprietary license | No
| [Dropbox](https://play.google.com/store/apps/details?id=com.dropbox.android) | Succinctly, read and write with Android 10, only read with Android 8 (stops the file stream). Not integrated. Breaks the file link systematically ([issue](https://www.dropboxforum.com/t5/Discuss-Developer-API/why-using-Intent-ACTION-OPEN-DOCUMENT-does-not-list-the-Dropbox/td-p/209654)). Can prevent file writing with read only mode. Using the "Make available offline" option on the Dropbox app allows to better manage synchronization and cache problems. https://help.dropbox.com/sync/access-files-offline | - | Closed source code, proprietary license | Yes 194.2.4
| [OneDrive](https://play.google.com/store/apps/details?id=com.microsoft.skydrive) | URIs appear to be reassigned to other files once revoked. This results in an attempt to open files that are not databases. Seems to delete data if the state of OneDrive is not correct, corrupts data when the file is selected from OneDrive. In the case of a persistent or non-updating database, it is necessary to clear the cache of the OneDrive app.<br/><br/>`content://com.microsoft.skydrive.content.StorageAccessProvider/` | - | Closed source code, proprietary license | No
| [PCloud](https://play.google.com/store/apps/details?id=com.pcloud.pcloud) | Does not allow save of the database file, integrated with default File app <br /><br />`content://com.pcloud.pcloud.documents/` | - | Closed source code, proprietary license | Yes (2.13.1)
| [Samsung "My Files"](https://play.google.com/store/apps/details?id=com.sec.android.app.myfiles) | Breaks the file link after a file modification | - | Closed source code, proprietary license | No
| [CX Explorer](https://play.google.com/store/apps/details?id=com.cxinventor.file.explorer) | Does not automatically recognize mime type ("Other" must be selected) | Allows connection to common clouds and protocols (FTP, SFTP, WebDAV) | Closed source code, proprietary license | Yes (1.4.6)
Related issues : [#342](https://github.com/Kunzisoft/KeePassDX/issues/342), [#897](https://github.com/Kunzisoft/KeePassDX/issues/897)
The file manager used must be trustworthy, as it is the application responsible for converting the data sent from KeePassDX through a stream into a .kdbx file. Unfortunately, there have been cases where file managers have corrupted database files because their implementation could not handle file write conflicts or simply because the application does not handle a specific case. So please take care when choosing your backup application and **perform regular [backups](https://github.com/Kunzisoft/KeePassDX/wiki/Backup#keepass-database-backup) to avoid data loss**.
# How it works