Android OMH Storage
Android OMH Storage streamlines the integration of various cloud storage providers into your Android application by offering a unified API for different storage providers. It supports both Google Mobile Services (GMS) and non-GMS configurations, making it easy to incorporate Google Drive, OneDrive and Dropbox storage providers.
Features
- π± GMS and non-GMS support for all storage providers
- ποΈ Identical API across all storage providers
- π¦ Official storage provider SDK integration
- π Easy configuration and setup
- π¨ Lightweight modules
OMH Storage Modules
This is the main directory of the mono-repo for Android OMH Storage. If you're searching for a particular package, please click on the corresponding package link below.
A single codebase, running seamlessly on any device
For instance, the following screenshots showcase multiple devices with Android, both with GMS and
Non-GMS. The same app works without changing a single line of code, supporting multiple storage
provider implementations.
| Google Drive (GMS) | Google Drive (non-GMS) | Dropbox | OneDrive |
| --- | --- | --- | ---|
| File listing |
|
|
|
|
|
Show more
| Google Drive (GMS) | Google Drive (non-GMS) | Dropbox | OneDrive |
| --- | --- | --- | --- |
| File searching |
|
|
|
|
|
| File creation |
|
|
|
|
|
| File update |
|
|
|
|
|
| File deletion |
|
|
|
|
|
| File upload |
|
|
|
|
|
| File download |
|
|
|
|
|
| File metadata |
|
|
|
|
|
| File versioning |
|
|
|
|
|
| File permissions |
|
|
|
|
|
Documentation
Supported functionality
- β
Β - supported
- π¨Β - partially supported
- βΒ - not supported
Features |
Google Drive (GMS) |
Google Drive (non-GMS) |
OneDrive |
Dropbox |
File listing |
β
|
β
|
β
|
β
|
File searching |
β
|
β
|
β
|
β
|
Folder creation |
β
|
β
|
β
|
β
|
File creation (by mime type) |
β
|
β
|
β |
β |
File creation (by extension) |
β |
β |
β
|
β
|
File update |
β
|
β
|
β
|
β
|
File deletion |
β
|
β
|
β
|
β
|
File permanent deletion |
β
|
β
|
β |
β |
File upload |
β
|
β
|
β
|
β
|
File download |
β
|
β
|
β
|
β
|
File export |
β
|
β
|
β |
β |
File metadata |
β
|
β
|
π¨ |
π¨ |
File versioning |
β
|
β
|
β
|
β
|
File permissions |
π¨ |
π¨ |
π¨ |
π¨ |
File URL |
β
|
β
|
β
|
β
|
Escape hatch (get provider SDK) |
β
|
β |
β
|
β
|
File metadata
Show details
[`OmhStorageEntity.OmhFile`](https://openmobilehub.github.io/android-omh-storage/api/packages/core/com.openmobilehub.android.storage.core.model/-omh-storage-entity/-omh-file)
| Property | Google Drive (GMS) | Google Drive (non-GMS) | OneDrive | Dropbox |
| ------------ | :----------------: | :--------------------: | :------: | :-----: |
| id | β
| β
| β
| β
|
| name | β
| β
| β
| β
|
| createdTime | β
| β
| β | β |
| modifiedTime | β
| β
| β
| β
|
| parentId | β
| β
| β
| β
|
| mimeType | β
| β
| β
| β
|
| extension | β
| β
| β
| β
|
| size | β
| β
| β
| β
|
[`OmhStorageEntity.OmhFolder`](https://openmobilehub.github.io/android-omh-storage/api/packages/core/com.openmobilehub.android.storage.core.model/-omh-storage-entity/-omh-folder)
| Property | Google Drive (GMS) | Google Drive (non-GMS) | OneDrive | Dropbox |
| ------------ | :----------------: | :--------------------: | :------: | :-----: |
| id | β
| β
| β
| β
|
| name | β
| β
| β
| β
|
| createdTime | β
| β
| β | β |
| modifiedTime | β
| β
| β
| β |
| parentId | β
| β
| β
| β
|
[`OmhStorageMetadata.originalMetadata`](https://openmobilehub.github.io/android-omh-storage/api/packages/core/com.openmobilehub.android.storage.core.model/-omh-storage-metadata/original-metadata.html)
| Storage provider | Type |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Google Drive (GMS) | [`com.google.api.services.drive.model.File`](https://developers.google.com/resources/api-libraries/documentation/drive/v3/java/latest/com/google/api/services/drive/model/File.html) |
| Google Drive (non-GMS) | `String` |
| OneDrive | [`com.microsoft.graph.models.DriveItem`](https://learn.microsoft.com/en-us/graph/api/resources/driveitem#properties) |
| Dropbox | [`com.dropbox.core.v2.files.Metadata`](https://dropbox.github.io/dropbox-sdk-java/api-docs/v2.0.x/com/dropbox/core/v2/files/Metadata.html) |
File permissions
Show details
[`OmhPermission.IdentityPermission`](https://openmobilehub.github.io/android-omh-storage/api/packages/core/com.openmobilehub.android.storage.core.model/-omh-permission/-identity-permission)
| Property | Google Drive (GMS) | Google Drive (non-GMS) | OneDrive | Dropbox |
| ----------- | :----------------: | :--------------------: | :------: | :-----: |
| id | β
| β
| β
| π¨ |
| role | β
| β
| β
| β
|
| isInherited | π¨ | π¨ | β
| β
|
| identity | β
| β
| β
| β
|
> **Google Drive**: The `isInherited` property is available only for items in shared drives.
> **Dropbox**: The `id` corresponds to the underlying identity ID.
[`OmhIdentity`](https://openmobilehub.github.io/android-omh-storage/api/packages/core/com.openmobilehub.android.storage.core.model/-omh-identity)
| Type | Google Drive (GMS) | Google Drive (non-GMS) | OneDrive | Dropbox |
| ----------- | :----------------: | :--------------------: | :------: | :-----: |
| User | β
| β
| β
| β
|
| Group | β
| β
| β
| β
|
| Domain | β
| β
| β | β |
| Anyone | β
| β
| β | β |
| Device | β | β | β
| β |
| Application | β | β | β
| β |
[`OmhIdentity.User`](https://openmobilehub.github.io/android-omh-storage/api/packages/core/com.openmobilehub.android.storage.core.model/-omh-identity/-user)
| Property | Google Drive (GMS) | Google Drive (non-GMS) | OneDrive | Dropbox |
| -------------- | :----------------: | :--------------------: | :------: | :-----: |
| id | β | β | β
| β
|
| displayName | β
| β
| β
| π¨ |
| emailAddress | β
| β
| β | β
|
| expirationTime | β
| β
| β
| β |
| deleted | β
| β
| β | β |
| photoLink | β
| β
| β | β |
| pendingOwner | β | β
| β | β |
> **Dropbox**: Invited users who do not have a Dropbox account will not have a `displayName`.
[`OmhIdentity.Group`](https://openmobilehub.github.io/android-omh-storage/api/packages/core/com.openmobilehub.android.storage.core.model/-omh-identity/-group)
| Property | Google Drive (GMS) | Google Drive (non-GMS) | OneDrive | Dropbox |
| -------------- | :----------------: | :--------------------: | :------: | :-----: |
| id | β | β | β
| β
|
| displayName | β
| β
| β
| β
|
| emailAddress | β
| β
| β | β |
| expirationTime | β
| β
| β
| β |
| deleted | β
| β
| β | β |
[`OmhPermissionRole`](https://openmobilehub.github.io/android-omh-storage/api/packages/core/com.openmobilehub.android.storage.core.model/-omh-permission-role)
| Role | Google Drive (GMS) | Google Drive (non-GMS) | OneDrive | Dropbox |
| --------- | :----------------: | :--------------------: | :------: | :-----: |
| OWNER | β
| β
| β
| β
|
| WRITER | β
| β
| β
| π¨ |
| COMMENTER | β
| β
| β | β
|
| READER | β
| β
| β
| π¨ |
> **Dropbox**:
>
> - While the `READER` role is documented in the API, Dropbox does not support granting this role. Attempting to do so will throw an exception with the user message: `viewer_no_comment isnβt yet supported`.
> - Dropbox also does not support granting the `WRITER` role for uploaded files. Any attempt will result in an exception with the user message: `You donβt have permission to perform this action`.
[`OmhPermissionRecipient`](https://openmobilehub.github.io/android-omh-storage/api/packages/core/com.openmobilehub.android.storage.core.model/-omh-permission-recipient)
| Type | Google Drive (GMS) | Google Drive (non-GMS) | OneDrive | Dropbox |
| ------------ | :----------------: | :--------------------: | :------: | :-----: |
| User | β
| β
| β
| β
|
| Group | β
| β
| β
| β |
| Domain | β
| β
| β | β |
| Anyone | β
| β
| β | β |
| WithObjectId | β | β | β
| β
|
| WithAlias | β | β | β
| β |
> **Dropbox**: To invite a group, use `WithObjectId` and provide the group ID.
Contributing
License