Most visited

Recently visited

ContextCompat

public class ContextCompat
extends Object

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


Helper用于访问在向后兼容的API级别4之后引入的 Context功能。

Summary

Public constructors

ContextCompat()

Public methods

static int checkSelfPermission(Context context, String permission)

确定 是否已获得特定权限。

static Context createDeviceProtectedStorageContext(Context context)

为当前上下文返回一个新的Context对象,但其存储API由受设备保护的存储支持。

static File getCodeCacheDir(Context context)

返回专用于存储缓存代码的文件系统上特定于应用程序的缓存目录的绝对路径。

static final int getColor(Context context, int id)

返回与特定资源ID关联的颜色

M开始,返回的颜色将根据指定的上下文主题进行样式设置。

static final ColorStateList getColorStateList(Context context, int id)

返回与特定资源ID关联的颜色状态列表。

static File getDataDir(Context context)

返回存储属于此应用程序的所有私人文件的文件系统上目录的绝对路径。

static final Drawable getDrawable(Context context, int id)

返回与特定资源ID关联的可绘制对象。

static File[] getExternalCacheDirs(Context context)

返回应用程序可以放置它拥有的缓存文件的所有外部存储设备上特定于应用程序的目录的绝对路径。

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

返回应用程序可以放置它拥有的持久性文件的所有外部存储设备上特定于应用程序的目录的绝对路径。

static final File getNoBackupFilesDir(Context context)

返回类似于 getFilesDir()的文件系统上目录的绝对路径。

static File[] getObbDirs(Context context)

返回应用程序的OBB文件(如果有)的所有外部存储设备上的应用程序特定目录的绝对路径。

static boolean isDeviceProtectedStorage(Context context)

指示此Context的存储API是否由设备加密的存储支持。

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

如果能够,将一组活动作为合成任务堆栈启动。

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

如果能够,将一组活动作为合成任务堆栈启动。

Inherited methods

From class java.lang.Object

Public constructors

ContextCompat

ContextCompat ()

Public methods

checkSelfPermission

int checkSelfPermission (Context context, 
                String 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

Context createDeviceProtectedStorageContext (Context context)

为当前上下文返回一个新的Context对象,但其存储API由受设备保护的存储支持。

在直接引导的设备上,存储在此位置的数据使用绑定到物理设备的密钥进行加密,并且可以在设备成功引导后立即访问,无论是 用户使用凭据进行身份验证 之前还是之后 (例如锁定模式或PIN)。

由于受到设备保护的数据在没有用户身份验证的情况下可用,因此应谨慎限制使用此上下文存储的数据。 例如,强烈建议不要在设备保护区域中存储敏感身份验证令牌或密码。

如果底层设备无法使用不同的密钥存储受设备保护和凭据保护的数据,则两个存储区域将同时可用。 它们仍然是磁盘上两个不同的存储位置,只有可用性窗口发生变化。

每次调用此方法都会返回一个Context对象的新实例; 上下文对象不共享,但是常见的状态(ClassLoader,用于相同配置的其他资源)可能是这样的,上下文本身可以是相当轻量级的。

isAtLeastN()之前,此方法返回 null ,因为受设备保护的存储不可用。

Parameters
context Context
Returns
Context

也可以看看:

getCodeCacheDir

File getCodeCacheDir (Context context)

返回专用于存储缓存代码的文件系统上特定于应用程序的缓存目录的绝对路径。 在运行LOLLIPOP或更高版本的设备上,无论是在特定应用程序升级还是整个平台升级时,系统都会删除存储在此位置的所有文件。

此位置适用于存储由应用程序在运行时生成的编译或优化的代码。

应用程序不需要额外的权限来读取或写入返回的路径,因为此路径位于其私有存储中。

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

getColor

int getColor (Context context, 
                int id)

返回与特定资源ID关联的颜色

M开始,返回的颜色将根据指定的上下文主题进行样式设置。

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

ColorStateList getColorStateList (Context context, 
                int id)

返回与特定资源ID关联的颜色状态列表。

M开始,返回的颜色状态列表将针对指定的上下文主题进行样式设置。

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

File getDataDir (Context context)

返回存储属于此应用程序的所有私人文件的文件系统上目录的绝对路径。 应用程序不应该直接使用此路径; 他们应该使用getFilesDir()getCacheDir()getDir(String, int) ,或者其他存储API Context

如果调用应用程序移动到采用的存储设备,则返回的路径可能会随时间而改变,因此只应保留相对路径。

调用应用程序无需额外的权限即可读取或写入返回路径下的文件。

Parameters
context Context
Returns
File

也可以看看:

getDrawable

Drawable getDrawable (Context context, 
                int id)

返回与特定资源ID关联的可绘制对象。

LOLLIPOP开始,返回的drawable将按照指定的Context的主题进行样式化。

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

File[] getExternalCacheDirs (Context context)

返回应用程序可以放置它拥有的缓存文件的所有外部存储设备上特定于应用程序的目录的绝对路径。 这些文件是应用程序的内部文件,并且通常不会作为媒体显示给用户。

这就像 getCacheDir() ,这些文件在卸载应用程序时将被删除,但是有一些重要的区别:

  • 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.

这里返回的外部存储设备被视为设备的永久部分,包括仿真的外部存储和物理介质插槽,如电池仓中的SD卡。 返回的路径不包括瞬态设备,如USB闪存驱动器。

应用程序可以将数据存储在任何或所有返回的设备上。 例如,应用程序可能会选择将大文件存储在具有最大可用空间的设备上,如StatFs

KITKAT开始,不需要写入返回路径的权限; 他们总是可以访问调用应用程序。 在此之前,需要编写WRITE_EXTERNAL_STORAGE 在辅助外部存储设备上写入这些路径之外的访问权限不可用。 要以向后兼容的方式请求外部存储访问,请考虑使用android:maxSdkVersion如下所示:

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

返回的第一个路径与getExternalCacheDir()相同。 如果存储设备不可用,返回的路径可能是null

Parameters
context Context
Returns
File[]

也可以看看:

getExternalFilesDirs

File[] getExternalFilesDirs (Context context, 
                String type)

返回应用程序可以放置它拥有的持久性文件的所有外部存储设备上特定于应用程序的目录的绝对路径。 这些文件是应用程序的内部文件,并且通常不会作为媒体显示给用户。

这就像 getFilesDir()一样,这些文件将在应用程序卸载时被删除,但是有一些重要的区别:

  • 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.

这里返回的外部存储设备被视为设备的永久部分,包括仿真的外部存储和物理介质插槽,如电池仓中的SD卡。 返回的路径不包括瞬态设备,如USB闪存驱动器。

应用程序可以将数据存储在任何或所有返回的设备上。 例如,应用程序可以选择将大文件存储在具有最大可用空间的设备上,如StatFs所测量的StatFs

KITKAT开始,不需要写入返回路径的权限; 他们总是可以访问调用应用程序。 在此之前,需要编写WRITE_EXTERNAL_STORAGE 在辅助外部存储设备上写入这些路径之外的访问权限不可用。 要以向后兼容的方式请求外部存储访问,请考虑使用android:maxSdkVersion如下所示:

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

返回的第一个路径与getExternalFilesDir(String)相同。 如果存储设备不可用,返回的路径可能是null

Parameters
context Context
type String
Returns
File[]

也可以看看:

getNoBackupFilesDir

File getNoBackupFilesDir (Context context)

返回类似于getFilesDir()的文件系统上目录的绝对路径。 不同之处在于放置在此目录下的文件将被排除在自动备份到运行LOLLIPOP或更高版本的设备上的远程存储中。 有关Android中的自动备份机制的完整讨论,请参阅BackupAgent

读取或写入返回的路径不需要任何权限,因为此路径是内部存储器。

Parameters
context Context
Returns
File The path of the directory holding application files that will not be automatically backed up to remote storage.

也可以看看:

getObbDirs

File[] getObbDirs (Context context)

返回应用程序的OBB文件(如果有)的所有外部存储设备上的应用程序特定目录的绝对路径。 请注意,如果应用程序没有任何OBB文件,这些目录可能不存在。

这类似于 getFilesDir() ,因为这些文件在卸载应用程序时将被删除,但存在一些重要区别:

  • 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.

这里返回的外部存储设备被视为设备的永久部分,包括仿真的外部存储和物理介质插槽,如电池仓中的SD卡。 返回的路径不包括瞬态设备,如USB闪存驱动器。

应用程序可以将数据存储在任何或所有返回的设备上。 例如,应用程序可以选择将大文件存储在具有最多可用空间的设备上,如StatFs所测量的StatFs

KITKAT开始,不需要写入返回路径的权限; 他们总是可以访问调用应用程序。 在此之前,需要编写WRITE_EXTERNAL_STORAGE 在辅助外部存储设备上写入这些路径之外的访问权限不可用。 要以向后兼容的方式请求外部存储访问,请考虑使用android:maxSdkVersion如下所示:

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

返回的第一个路径与getObbDir()相同。 如果存储设备不可用,返回的路径可能为null

Parameters
context Context
Returns
File[]

也可以看看:

isDeviceProtectedStorage

boolean isDeviceProtectedStorage (Context context)

指示此Context的存储API是否由设备加密的存储支持。

Parameters
context Context
Returns
boolean

也可以看看:

startActivities

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

如果能够,将一组活动作为合成任务堆栈启动。

在API级别11(Android 3.0 / Honeycomb)中,使用后退键推荐的应用导航约定已更改。 后退键的行为对于当前任务是本地的,并且不捕获跨越不同任务的导航。 可以通过导航或系统栏上的软件提供的“最近”键访问“最近”UI,从而完成任务之间的导航并轻松完成以前的任务。 在具有较旧硬件按钮配置的设备上,可以通过长按Home键来访问最近的UI。

当从一个任务栈跨越到另一个Android 3.0后,应用程序应该为新任务合成一个后退堆栈/历史记录,以便用户可以通过反复按下后退键导航出新任务并返回到启动器。 后退键不应该在任务堆栈中导航。

startActivities提供了一个构造多个活动的综合任务堆栈的机制。 如果底层API在系统上不可用,则此方法将返回false。

Parameters
context Context: Start activities using this activity as the starting context
intents Intent: Array of intents defining the activities that will be started. The element length-1 will correspond to the top activity on the resulting task stack.
options Bundle: Additional options for how the Activity should be started. See {@link android.content.Context#startActivity(Intent, android.os.Bundle)
Returns
boolean true if the underlying API was available and the call was successful, false otherwise

startActivities

boolean startActivities (Context context, 
                Intent[] intents)

如果能够,将一组活动作为合成任务堆栈启动。

在API级别11(Android 3.0 / Honeycomb)中,使用后退键推荐的应用导航约定已更改。 后退键的行为对于当前任务是本地的,并且不捕获跨越不同任务的导航。 可以通过导航或系统栏上的软件提供的“最近”键访问“最近”UI,从而完成任务之间的导航并轻松完成以前的任务。 在具有较旧硬件按钮配置的设备上,可以通过长按Home键来访问最近的UI。

当从一个任务栈跨越到另一个Android 3.0后,应用程序应该为新任务合成一个后退堆栈/历史记录,以便用户可以通过反复按下后退键导航出新任务并返回到启动器。 后退键不应该在任务堆栈中导航。

startActivities提供了一个构造多个活动的综合任务堆栈的机制。 如果底层API在系统上不可用,则此方法将返回false。

Parameters
context Context: Start activities using this activity as the starting context
intents Intent: Array of intents defining the activities that will be started. The element length-1 will correspond to the top activity on the resulting task stack.
Returns
boolean true if the underlying API was available and the call was successful, false otherwise

Hooray!