added in version 22.1.0
belongs to Maven artifact com.android.support:support-compat:28.0.0-alpha1

ContextCompat

public class ContextCompat
extends Object

java.lang.Object
   ↳ android.support.v4.content.ContextCompat
Known Direct Subclasses
Known Indirect Subclasses


Helper for accessing features in Context.

Summary

Protected constructors

ContextCompat()

This class should not be instantiated, but the constructor must be visible for the class to be extended (ex.

Public methods

static int checkSelfPermission(Context context, String permission)

Determine whether you have been granted a particular permission.

static Context createDeviceProtectedStorageContext(Context context)

Return a new Context object for the current Context but whose storage APIs are backed by device-protected storage.

static File getCodeCacheDir(Context context)

Returns the absolute path to the application specific cache directory on the filesystem designed for storing cached code.

static int getColor(Context context, int id)

Returns a color associated with a particular resource ID

Starting in M, the returned color will be styled for the specified Context's theme.

static ColorStateList getColorStateList(Context context, int id)

Returns a color state list associated with a particular resource ID.

static File getDataDir(Context context)

Returns the absolute path to the directory on the filesystem where all private files belonging to this app are stored.

static Drawable getDrawable(Context context, int id)

Returns a drawable object associated with a particular resource ID.

static File[] getExternalCacheDirs(Context context)

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

static File[] getExternalFilesDirs(Context context, String type)

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

static File getNoBackupFilesDir(Context context)

Returns the absolute path to the directory on the filesystem similar to getFilesDir().

static File[] getObbDirs(Context context)

Returns absolute paths to application-specific directories on all external storage devices where the application's OBB files (if there are any) can be found.

static <T> T getSystemService(Context context, Class<T> serviceClass)

Return the handle to a system-level service by class.

static String getSystemServiceName(Context context, Class<?> serviceClass)

Gets the name of the system-level service that is represented by the specified class.

static boolean isDeviceProtectedStorage(Context context)

Indicates if the storage APIs of this Context are backed by device-encrypted storage.

static boolean startActivities(Context context, Intent[] intents, Bundle options)

Start a set of activities as a synthesized task stack, if able.

static boolean startActivities(Context context, Intent[] intents)

Start a set of activities as a synthesized task stack, if able.

static void startActivity(Context context, Intent intent, Bundle options)

Start an activity with additional launch information, if able.

static void startForegroundService(Context context, Intent intent)

startForegroundService() was introduced in O, just call startService for before O.

Inherited methods

From class java.lang.Object

Protected constructors

ContextCompat

added in version 22.1.0
ContextCompat ()

This class should not be instantiated, but the constructor must be visible for the class to be extended (ex. in ActivityCompat).

Public methods

checkSelfPermission

added in version 24.1.0
int checkSelfPermission (Context context, 
                String permission)

Determine whether you have been granted a particular permission.

Parameters
context Context

permission String: The name of the permission being checked.

Returns
int PERMISSION_GRANTED if you have the permission, or PERMISSION_DENIED if not.

createDeviceProtectedStorageContext

added in version 24.1.0
Context createDeviceProtectedStorageContext (Context context)

Return a new Context object for the current Context but whose storage APIs are backed by device-protected storage.

On devices with direct boot, data stored in this location is encrypted with a key tied to the physical device, and it can be accessed immediately after the device has booted successfully, both before and after the user has authenticated with their credentials (such as a lock pattern or PIN).

Because device-protected data is available without user authentication, you should carefully limit the data you store using this Context. For example, storing sensitive authentication tokens or passwords in the device-protected area is strongly discouraged.

If the underlying device does not have the ability to store device-protected and credential-protected data using different keys, then both storage areas will become available at the same time. They remain as two distinct storage locations on disk, and only the window of availability changes.

Each call to this method returns a new instance of a Context object; Context objects are not shared, however common state (ClassLoader, other Resources for the same configuration) may be so the Context itself can be fairly lightweight.

Prior to API 24 this method returns null, since device-protected storage is not available.

Parameters
context Context

Returns
Context

getCodeCacheDir

added in version 22.1.0
File getCodeCacheDir (Context context)

Returns the absolute path to the application specific cache directory on the filesystem designed for storing cached code. On devices running LOLLIPOP or later, the system will delete any files stored in this location both when your specific application is upgraded, and when the entire platform is upgraded.

This location is optimal for storing compiled or optimized code generated by your application at runtime.

Apps require no extra permissions to read or write to the returned path, since this path lives in their private storage.

Parameters
context Context

Returns
File The path of the directory holding application code cache files.

getColor

added in version 24.1.0
int getColor (Context context, 
                int id)

Returns a color associated with a particular resource ID

Starting in M, the returned color will be styled for the specified Context's theme.

Parameters
context Context

id int: The desired resource identifier, as generated by the aapt tool. This integer encodes the package, type, and resource entry. The value 0 is an invalid identifier.

Returns
int A single color value in the form 0xAARRGGBB.

Throws
Resources.NotFoundException if the given ID does not exist.

getColorStateList

added in version 24.1.0
ColorStateList getColorStateList (Context context, 
                int id)

Returns a color state list associated with a particular resource ID.

Starting in M, the returned color state list will be styled for the specified Context's theme.

Parameters
context Context

id int: The desired resource identifier, as generated by the aapt tool. This integer encodes the package, type, and resource entry. The value 0 is an invalid identifier.

Returns
ColorStateList A color state list, or null if the resource could not be resolved.

Throws
Resources.NotFoundException if the given ID does not exist.

getDataDir

added in version 24.1.0
File getDataDir (Context context)

Returns the absolute path to the directory on the filesystem where all private files belonging to this app are stored. Apps should not use this path directly; they should instead use getFilesDir(), getCacheDir(), getDir(String, int), or other storage APIs on Context.

The returned path may change over time if the calling app is moved to an adopted storage device, so only relative paths should be persisted.

No additional permissions are required for the calling app to read or write files under the returned path.

Parameters
context Context

Returns
File

See also:

getDrawable

added in version 22.1.0
Drawable getDrawable (Context context, 
                int id)

Returns a drawable object associated with a particular resource ID.

Starting in LOLLIPOP, the returned drawable will be styled for the specified Context's theme.

Parameters
context Context

id int: The desired resource identifier, as generated by the aapt tool. This integer encodes the package, type, and resource entry. The value 0 is an invalid identifier.

Returns
Drawable Drawable An object that can be used to draw this resource.

getExternalCacheDirs

added in version 22.1.0
File[] getExternalCacheDirs (Context context)

Returns absolute paths to application-specific directories on all 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:

  • External files are not always available: they will disappear if the user mounts the external storage on a computer or removes it.
  • There is no security enforced with these files.

External storage devices returned here are considered a permanent part of the device, including both emulated external storage and physical media slots, such as SD cards in a battery compartment. The returned paths do not include transient devices, such as USB flash drives.

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.

Starting in KITKAT, no permissions are required to write to the returned paths; they're always accessible to the calling app. Before then, WRITE_EXTERNAL_STORAGE is required to write. Write access outside of these paths on secondary external storage devices is not available. To request external storage access in a backwards compatible way, consider using android:maxSdkVersion like this:

<uses-permission
     android:name="android.permission.WRITE_EXTERNAL_STORAGE"
     android:maxSdkVersion="18" />

The first path returned is the same as getExternalCacheDir(). Returned paths may be null if a storage device is unavailable.

Parameters
context Context

Returns
File[]

getExternalFilesDirs

added in