mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Updated File Manager and Sync (markdown)
@@ -2,39 +2,39 @@
|
||||
|
||||
The **KeePassDX** app uses your device's external file managers and the [*storage access framework* connection capabilities](https://developer.android.com/guide/topics/providers/document-provider) of these third-party app to edit database files.
|
||||
|
||||
You should see KeePassDX as a file editor and not a file manager. Links in the list of recent databases are only quick references to access historic links provides by the external file manager used to open your database file.
|
||||
You should see KeePassDX as a file editor and not a file manager. Links in the list of recent databases are only quick references to access historic links provides by the external file app used to open your database file.
|
||||
|
||||
# Compatibility
|
||||
|
||||
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 cloud applications, you have to select your database files from the desired cloud application and not from KeePassDX because intent actions are not managed by these third-party applications.**
|
||||
**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.**
|
||||
|
||||
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 manager or your cloud client is fully working or not.
|
||||
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.
|
||||
***
|
||||
|
||||
| File manager / cloud client app | Works | Intent action | Pros | Cons | Officially tested
|
||||
| - | - | - | - | - | - |
|
||||
| File (default app) | Fully <br/><br/>`content://com.android.externalstorage.documents/` | Open - Create | Integrated by default with multiple Android systems ([AOSP](https://source.android.com/), [Lineage OS](https://lineageos.org/), ...). _Note: Full integration applies to local files, not if you are using a cloud integrated with the File application (i.e. GDrive, see below)._ | - | Yes
|
||||
| [Material Files](https://f-droid.org/en/packages/me.zhanghai.android.files/) | Partially (only open action) <br/><br/>`content://me.zhanghai.android.files.file_provider/` | Open | Open source, connection to an FTP server | Does not integrate other cloud applications | Yes
|
||||
| [RCX](https://play.google.com/store/apps/details?id=io.github.x0b.rcx) | Partially. Works from the application itself | No | Easy to use, connections to a large amount of remote services (Clouds, HTTP, FTP, SFTP, WebDAV). Opened source code | Contains proprietary APIs | No
|
||||
| [Mixplorer](https://labs.xda-developers.com/store/app/com.mixplorer) | 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/` | Open - Create | 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 | ? | Open source | More difficult to set up for a private server | No
|
||||
| [OwnCloud](https://f-droid.org/en/packages/com.owncloud.android/) | - | ? | Open source | 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. In the case of a persistent or non-updating database, it is necessary to clear the cache of the Google Drive app. <br/><br/>`content://com.google.android.apps.docs.storage/`<br/>`content://com.google.android.apps.docs.storage.legacy/` | No | 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. | No | - | 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. | ? | - | 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 | No | - | 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) | No | Allows connection to common clouds and protocols (FTP, SFTP, WebDAV) | Closed source code, proprietary license | Yes (1.4.6)
|
||||
| File manager / cloud client app | Works | Pros | Cons | Officially tested
|
||||
| - | - | - | - | - |
|
||||
| Files (default app in the device) | Fully integrated <br/><br/>`content://com.android.externalstorage.documents/` | Integrated by default with almost all systems (but is sometimes hidden to users). _Note: Full integration applies to local files, and only to cloud files provided by compatible apps (i.e. GDrive, see below)._ | - | Yes
|
||||
| [Material Files](https://f-droid.org/en/packages/me.zhanghai.android.files/) | Yes <br/><br/>`content://me.zhanghai.android.files.file_provider/` | Open source, connection to an FTP server, very well maintained | - | Yes
|
||||
| [RCX](https://play.google.com/store/apps/details?id=io.github.x0b.rcx) | ? | Easy to use, connections to a large amount of remote services (Clouds, HTTP, FTP, SFTP, WebDAV). Opened source code | Contains proprietary APIs | No
|
||||
| [Mixplorer](https://labs.xda-developers.com/store/app/com.mixplorer) | 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 | Open source | More difficult to set up for a private server | No
|
||||
| [OwnCloud](https://f-droid.org/en/packages/com.owncloud.android/) | - | Open source | 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. In the case of a persistent or non-updating database, it is necessary to clear the cache of the Google Drive app. <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. | - | 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. | - | 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 | - | 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 creation of a file manager fully compatible with open protocols and cloud clients is under study. Feel free to mention tools that would facilitate its construction, or file managers that keep KeePass links.*
|
||||
*The creation of a file app fully compatible with open protocols and cloud clients is under study. Feel free to mention tools that would facilitate its construction, or file managers that keep KeePass links.*
|
||||
|
||||
## Synchronization application
|
||||
|
||||
In addition to file managers, 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.
|
||||
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
|
||||
| --- | --- | --- | --- |
|
||||
@@ -46,7 +46,7 @@ It is not planned to integrate the cloud APIs directly in KeePassDX, because it
|
||||
|
||||
KeePassDX uses the [storage access framework](https://developer.android.com/training/data-storage/shared/documents-files) of your file manager and its content provider provides a URI that is represented by the displayed Path.
|
||||
The direct file tree will not be accessible to KeePassDX for security reasons.
|
||||
This mode of operation allows interoperability with all properly designed file managers, without using write permissions.
|
||||
This mode of operation allows interoperability with all properly designed file providers, without using write permissions.
|
||||
|
||||
_For a better understanding : it's like looking at a website, you have a URL that displays a page and you can only access the files on the page through that URL, you don't see the file tree on the server._
|
||||
_Here it is the same with URIs, and the advantage is that the file manager can be a gateway to retrieve the database file with any protocol (WebDav, FTP, direct path, whatever..)_
|
||||
@@ -61,20 +61,17 @@ If the URI is not the same, the biometric recognition will have to be reconfigur
|
||||
|
||||
## Why disparate compatibility?
|
||||
|
||||
File managers content providers must be compatible with the standard intents [ACTION_OPEN_DOCUMENT](https://developer.android.com/reference/android/content/Intent#ACTION_OPEN_DOCUMENT), [ACTION_CREATE_DOCUMENT](https://developer.android.com/reference/android/content/Intent#ACTION_CREATE_DOCUMENT) and keep the links active with the flag [FLAG_GRANT_PERSISTABLE_URI_PERMISSION](https://developer.android.com/reference/android/content/Intent#FLAG_GRANT_PERSISTABLE_URI_PERMISSION) to be fully functional.
|
||||
**These methods are standardized and provided in the official documentation of Android, so it is not the fault of KeePassDX if your preferred file manager does not use these methods.**
|
||||
**Important : Since Android 11, third-party apps can no longer be the client for requests to open and create files, so only the default "Files" app is usable and the "Intent action" section with [ACTION_OPEN_DOCUMENT](https://developer.android.com/reference/android/content/Intent#ACTION_OPEN_DOCUMENT) and [ACTION_CREATE_DOCUMENT](https://developer.android.com/reference/android/content/Intent#ACTION_CREATE_DOCUMENT) is no longer relevant. You will have to either go through the third party app directly, or go through its implementation in "Files" already integrated in your device. https://developer.android.com/about/versions/11/privacy/storage**
|
||||
|
||||
File managers content providers must keep the links active with the flag [FLAG_GRANT_PERSISTABLE_URI_PERMISSION](https://developer.android.com/reference/android/content/Intent#FLAG_GRANT_PERSISTABLE_URI_PERMISSION) to be fully functional.
|
||||
**These methods are standardized and provided in the official documentation of Android, so it is not the fault of KeePassDX if your preferred file manager does not use these method.**
|
||||
|
||||
When using Storage Access Framework, write permissions are no longer required.
|
||||
But beware of the links provided, if you select your file from the list of recent files, the file may be read-only because several file managers ignore the file write request implicitly defined in the intent (flag [FLAG_GRANT_WRITE_URI_PERMISSION](https://developer.android.com/reference/android/content/Intent.html#FLAG_GRANT_WRITE_URI_PERMISSION)) or the link is simply broken and is no longer provided by the content provider of your file manager.
|
||||
|
||||
By selecting your file from the file manager and not from the `OPEN EXISTING DATABASE` button of KeePassDX, the link will necessarily be of type `ACTION_GET_CONTENT` and it will not be possible to request a [persistence](https://developer.android.com/reference/android/content/ContentResolver#takePersistableUriPermission(android.net.Uri,%20int)) of the link which will be easily broken. So go through the KeePassDX open button to request a persistent link with an `ACTION_OPEN_DOCUMENT` intent.
|
||||
By selecting your file from the file manager and not from the `OPEN EXISTING DATABASE` button of KeePassDX, the link will necessarily be of type `ACTION_GET_CONTENT` and it will not be possible to request a [persistence](https://developer.android.com/reference/android/content/ContentResolver#takePersistableUriPermission(android.net.Uri,%20int)) of the link which will be easily broken. So go through the KeePassDX open button to request a persistent link with an `ACTION_OPEN_DOCUMENT` intent, this will open the default file manager "Files" of your device.
|
||||
|
||||
If your favorite file manager is not proposed with this method :
|
||||
* your device is configured to offer only one default program for this intent
|
||||
* or either it is not compatible with your file manager app and you must ask the developer of this project to implement it
|
||||
|
||||
Write permissions are only used for file managers that use the [ACTION_GET_CONTENT](https://developer.android.com/reference/android/content/Intent#ACTION_GET_CONTENT) intent in order to maintain compatibility with managers who cannot use the standard method.
|
||||
**Write permissions in KeePass are therefore not normally necessary if the manager has been created correctly.**
|
||||
If your favorite file manager is not proposed with this method, the app you are using is not integrated with the base "Files" app and you must ask the developer of this app to implement it.
|
||||
|
||||
By making a simple click on the `OPEN EXISTING DATABASE` button, you make a request for an `ACTION_OPEN_DOCUMENT` intent.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user