StorageVolume Class

Definition

Information about a shared/external storage volume for a specific user.

[Android.Runtime.Register("android/os/storage/StorageVolume", ApiSince=24, DoNotGenerateAcw=true)]
public sealed class StorageVolume : Java.Lang.Object, Android.OS.IParcelable, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("android/os/storage/StorageVolume", ApiSince=24, DoNotGenerateAcw=true)>]
type StorageVolume = class
    inherit Object
    interface IParcelable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Inheritance
StorageVolume
Attributes
Implements

Remarks

Information about a shared/external storage volume for a specific user.

A device always has one (and one only) primary storage volume, but it could have extra volumes, like SD cards and USB drives. This object represents the logical view of a storage volume for a specific user: different users might have different views for the same physical volume (for example, if the volume is a built-in emulated storage).

The storage volume is not necessarily mounted, applications should use #getState() to verify its state.

Applications willing to read or write to this storage volume needs to get a permission from the user first, which can be achieved in the following ways:

<ul> <li>To get access to standard directories (like the Environment#DIRECTORY_PICTURES), they can use the #createAccessIntent(String). This is the recommend way, since it provides a simpler API and narrows the access to the given directory (and its descendants). <li>To get access to any directory (and its descendants), they can use the Storage Acess Framework APIs (such as Intent#ACTION_OPEN_DOCUMENT and Intent#ACTION_OPEN_DOCUMENT_TREE, although these APIs do not guarantee the user will select this specific volume. <li>To get read and write access to the primary storage volume, applications can declare the android.Manifest.permission#READ_EXTERNAL_STORAGE and android.Manifest.permission#WRITE_EXTERNAL_STORAGE permissions respectively, with the latter including the former. This approach is discouraged, since users may be hesitant to grant broad access to all files contained on a storage device. </ul>

It can be obtained through StorageManager#getStorageVolumes() and StorageManager#getPrimaryStorageVolume() and also as an extra in some broadcasts (see #EXTRA_STORAGE_VOLUME).

See Environment#getExternalStorageDirectory() for more info about shared/external storage semantics.

Java documentation for android.os.storage.StorageVolume.

Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.

Fields

ExtraStorageVolume

Name of the Parcelable extra in the Intent#ACTION_MEDIA_REMOVED, Intent#ACTION_MEDIA_UNMOUNTED, Intent#ACTION_MEDIA_CHECKING, Intent#ACTION_MEDIA_NOFS, Intent#ACTION_MEDIA_MOUNTED, Intent#ACTION_MEDIA_SHARED, Intent#ACTION_MEDIA_BAD_REMOVAL, Intent#ACTION_MEDIA_UNMOUNTABLE, and Intent#ACTION_MEDIA_EJECT broadcast that contains a StorageVolume.

Properties

Class

Returns the runtime class of this Object.

(Inherited from Object)
Creator
Directory

Returns the directory where this volume is currently mounted.

Handle

The handle to the underlying Android instance.

(Inherited from Object)
IsEmulated

Returns true if the volume is emulated.

IsPrimary

Returns true if the volume is the primary shared/external storage, which is the volume backed by Environment#getExternalStorageDirectory().

IsRemovable

Returns true if the volume is removable.

JniIdentityHashCode (Inherited from Object)
JniPeerMembers
MediaStoreVolumeName

Return the volume name that can be used to interact with this storage device through MediaStore.

Owner

Returns the user that owns this volume

PeerReference (Inherited from Object)
State

Returns the current state of the volume.

StorageUuid

Gets the converted volume UUID.

ThresholdClass

This API supports the Mono for Android infrastructure and is not intended to be used directly from your code.

(Inherited from Object)
ThresholdType

This API supports the Mono for Android infrastructure and is not intended to be used directly from your code.

(Inherited from Object)
Uuid

Gets the volume UUID, if any.

Methods

Clone()

Creates and returns a copy of this object.

(Inherited from Object)
CreateAccessIntent(String)

Builds an intent to give access to a standard storage directory or entire volume after obtaining the user's approval.

CreateOpenDocumentTreeIntent()

Builds an Intent#ACTION_OPEN_DOCUMENT_TREE to allow the user to grant access to any directory subtree (or entire volume) from the android.provider.DocumentsProviders available on the device.

DescribeContents()
Dispose() (Inherited from Object)
Dispose(Boolean) (Inherited from Object)
Equals(Object)

Indicates whether some other object is "equal to" this one.

(Inherited from Object)
GetDescription(Context)

Returns a user-visible description of the volume.

GetHashCode()

Returns a hash code value for the object.

(Inherited from Object)
JavaFinalize()

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.

(Inherited from Object)
Notify()

Wakes up a single thread that is waiting on this object's monitor.

(Inherited from Object)
NotifyAll()

Wakes up all threads that are waiting on this object's monitor.

(Inherited from Object)
SetHandle(IntPtr, JniHandleOwnership)

Sets the Handle property.

(Inherited from Object)
ToArray<T>() (Inherited from Object)
ToString()

Returns a string representation of the object.

(Inherited from Object)
UnregisterFromRuntime() (Inherited from Object)
Wait()

Causes the current thread to wait until it is awakened, typically by being <em>notified</em> or <em>interrupted</em>.

(Inherited from Object)
Wait(Int64)

Causes the current thread to wait until it is awakened, typically by being <em>notified</em> or <em>interrupted</em>, or until a certain amount of real time has elapsed.

(Inherited from Object)
Wait(Int64, Int32)

Causes the current thread to wait until it is awakened, typically by being <em>notified</em> or <em>interrupted</em>, or until a certain amount of real time has elapsed.

(Inherited from Object)
WriteToParcel(Parcel, ParcelableWriteFlags)

Explicit Interface Implementations

IJavaPeerable.Disposed() (Inherited from Object)
IJavaPeerable.DisposeUnlessReferenced() (Inherited from Object)
IJavaPeerable.Finalized() (Inherited from Object)
IJavaPeerable.JniManagedPeerState (Inherited from Object)
IJavaPeerable.SetJniIdentityHashCode(Int32) (Inherited from Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) (Inherited from Object)
IJavaPeerable.SetPeerReference(JniObjectReference) (Inherited from Object)

Extension Methods

JavaCast<TResult>(IJavaObject)

Performs an Android runtime-checked type conversion.

JavaCast<TResult>(IJavaObject)
GetJniTypeName(IJavaPeerable)

Applies to