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
| Property | Google Drive (GMS) | Google Drive (non-GMS) | OneDrive | Dropbox |
|---|---|---|---|---|
| id | β | β | β | β |
| name | β | β | β | β |
| createdTime | β | β | β | β |
| modifiedTime | β | β | β | β |
| parentId | β | β | β | β |
| mimeType | β | β | β | β |
| extension | β | β | β | β |
| size | β | β | β | β |
| Property | Google Drive (GMS) | Google Drive (non-GMS) | OneDrive | Dropbox |
|---|---|---|---|---|
| id | β | β | β | β |
| name | β | β | β | β |
| createdTime | β | β | β | β |
| modifiedTime | β | β | β | β |
| parentId | β | β | β | β |
OmhStorageMetadata.originalMetadata
| Storage provider | Type |
|---|---|
| Google Drive (GMS) | com.google.api.services.drive.model.File |
| Google Drive (non-GMS) | String |
| OneDrive | com.microsoft.graph.models.DriveItem |
| Dropbox | com.dropbox.core.v2.files.Metadata |
File permissions
Show details
OmhPermission.IdentityPermission
| Property | Google Drive (GMS) | Google Drive (non-GMS) | OneDrive | Dropbox |
|---|---|---|---|---|
| id | β | β | β | π¨ |
| role | β | β | β | β |
| isInherited | π¨ | π¨ | β | β |
| identity | β | β | β | β |
Google Drive: The
isInheritedproperty is available only for items in shared drives.
Dropbox: The
idcorresponds to the underlying identity ID.
| Type | Google Drive (GMS) | Google Drive (non-GMS) | OneDrive | Dropbox |
|---|---|---|---|---|
| User | β | β | β | β |
| Group | β | β | β | β |
| Domain | β | β | β | β |
| Anyone | β | β | β | β |
| Device | β | β | β | β |
| Application | β | β | β | β |
| 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.
| Property | Google Drive (GMS) | Google Drive (non-GMS) | OneDrive | Dropbox |
|---|---|---|---|---|
| id | β | β | β | β |
| displayName | β | β | β | β |
| emailAddress | β | β | β | β |
| expirationTime | β | β | β | β |
| deleted | β | β | β | β |
| Role | Google Drive (GMS) | Google Drive (non-GMS) | OneDrive | Dropbox |
|---|---|---|---|---|
| OWNER | β | β | β | β |
| WRITER | β | β | β | π¨ |
| COMMENTER | β | β | β | β |
| READER | β | β | β | π¨ |
Dropbox:
While the
READERrole 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
WRITERrole for uploaded files. Any attempt will result in an exception with the user message:You donβt have permission to perform this action.
| Type | Google Drive (GMS) | Google Drive (non-GMS) | OneDrive | Dropbox |
|---|---|---|---|---|
| User | β | β | β | β |
| Group | β | β | β | β |
| Domain | β | β | β | β |
| Anyone | β | β | β | β |
| WithObjectId | β | β | β | β |
| WithAlias | β | β | β | β |
Dropbox: To invite a group, use
WithObjectIdand provide the group ID.
Contributing
License
-
See LICENSE
All modules:
To integrate the Core package into your Android project, follow these steps:
Ensure you have the following packages installed before proceeding with the integration:
Ensure you have the following packages installed before proceeding with the integration:
This plugin does not provides an escape hatch to access the native Google Drive Android SDK, as it uses REST API instead. If needed, you can use credentials from OmhAuthClient to authorise your own REST API client.
Ensure you have the following packages installed before proceeding with the integration:







































