Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How app can access files on USB OTG storages in Android 6.0 (API level 23) without root?

Tags:

Android 6.0 Developer Preview (API level 23) can natively mounts external removable USB OTG storages out-of-the-box without any additional apps (for more info please see: https://www.androidpolice.com/2015/05/28/android-m-feature-spotlight-external-storage-can-be-adopted-as-true-internal-storage-or-accessed-normally-with-no-additional-apps/).

When user connects USB OTG storage, it shows up in the system storage menu and it is accessible with the built-in file manager. User can access all files on the USB OTG external storage using the new built-in file manager without root rights.

When I connect my USB OTG storage to my Android device, it mounts at /storage/A03E-1DF5 and also at /mnt/media_rw/A03E-1DF5, but root rights required to access this folder.

I'm working on Android media player app.

Is it possible and how to access files on USB OTG storages on Android 6.0 in my app like the built-in file manager without root rights?

P.S. I already use checkSelfPermission and requestPermissions functions in my app and my app already has android.permission.READ_EXTERNAL_STORAGE and android.permission.WRITE_EXTERNAL_STORAGE (for more info please see: https://www.androidpolice.com/2015/07/15/android-m-feature-spotlight-apps-now-need-your-permission-to-read-and-write-to-external-storage/), but looks like these permissions only affects internal storages (MicroSD), and for USB OTG there is no such granular permission.

like image 580
Vika Apelsinova Avatar asked Aug 25 '15 10:08

Vika Apelsinova


People also ask

Why is OTG not showing in file manager?

Root Your Device Some Android phones can only be connected to an OTG after they are rooted. It's because this particular phone model cannot mount external memory automatically. Here, you need to root the device and opt for some other software that has better compatibility with USB devices.

How to allow access to MANAGE all files Android 11?

On the Settings > Privacy > Permission manager > Files and media page, each app that has the permission is listed under Allowed for all files. If your app targets Android 11, keep in mind that this access to "all files" is read-only.

What API level is marshmallow?

Marshmallow (Android version 6.0, API Level 23) is the latest release of Android, and includes a set of new APIs for developers to use.


1 Answers

Since Android 6, according to the USB Media Support documentation, the Storage Access Framework seems to be the only available mecanism:

In Android 6.0, any device that is not adopted is considered portable. […] Third-party apps must go through the Storage Access Framework to interact with files on portable storage; direct access is explicitly blocked for privacy and security reasons.

like image 156
cuihtlauac Avatar answered Oct 16 '22 08:10

cuihtlauac