Share via


Context.GetExternalCacheDirs Method

Definition

Returns absolute paths to application-specific directories on all shared/external storage devices where the application can place cache files it owns.

[Android.Runtime.Register("getExternalCacheDirs", "()[Ljava/io/File;", "GetGetExternalCacheDirsHandler")]
public abstract Java.IO.File[]? GetExternalCacheDirs ();
[<Android.Runtime.Register("getExternalCacheDirs", "()[Ljava/io/File;", "GetGetExternalCacheDirsHandler")>]
abstract member GetExternalCacheDirs : unit -> Java.IO.File[]

Returns

File[]

the absolute paths to application-specific directories. Some individual paths may be null if that shared storage is not currently available. The first path returned is the same as #getExternalCacheDir().

Attributes

Remarks

Returns absolute paths to application-specific directories on all shared/external storage devices where the application can place cache files it owns. These files are internal to the application, and not typically visible to the user as media.

This is like #getCacheDir() in that these files will be deleted when the application is uninstalled, however there are some important differences: <ul> <li>The platform does not always monitor the space available in shared storage, and thus may not automatically delete these files. Apps should always manage the maximum space used in this location. Currently the only time files here will be deleted by the platform is when running on android.os.Build.VERSION_CODES#JELLY_BEAN_MR1 or later and Environment#isExternalStorageEmulated(File) returns true. <li>Shared storage may not always be available, since removable media can be ejected by the user. Media state can be checked using Environment#getExternalStorageState(File). <li>There is no security enforced with these files. For example, any application holding android.Manifest.permission#WRITE_EXTERNAL_STORAGE can write to these files. </ul>

If a shared storage device is emulated (as determined by Environment#isExternalStorageEmulated(File)), it's contents are backed by a private user data partition, which means there is little benefit to storing data here instead of the private directory returned by #getCacheDir().

Shared storage devices returned here are considered a stable part of the device, including physical media slots under a protective cover. The returned paths do not include transient devices, such as USB flash drives connected to handheld devices.

An application may store data on any or all of the returned devices. For example, an app may choose to store large files on the device with the most available space, as measured by StatFs.

No additional permissions are required for the calling app to read or write files under the returned path. Write access outside of these paths on secondary external storage devices is not available.

The returned paths may change over time if different shared storage media is inserted, so only relative paths should be persisted.

Java documentation for android.content.Context.getExternalCacheDirs().

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.

Applies to

See also