Most visited

Recently visited

Added in API level 1

ContextWrapper

public class ContextWrapper
extends Context

java.lang.Object
   ↳ android.content.Context
     ↳ android.content.ContextWrapper
Known Direct Subclasses
Known Indirect Subclasses


代理执行Context,将其所有调用简单地委托给另一个Context。 可以被分类为修改行为而不更改原始上下文。

Summary

Inherited constants

From class android.content.Context

Public constructors

ContextWrapper(Context base)

Public methods

boolean bindService(Intent service, ServiceConnection conn, int flags)

连接到应用程序服务,根据需要创建它。

int checkCallingOrSelfPermission(String permission)

确定IPC的调用过程 还是您已被授予特定权限。

int checkCallingOrSelfUriPermission(Uri uri, int modeFlags)

确定IPC的调用进程 或您是否被授予访问特定URI的权限。

int checkCallingPermission(String permission)

确定您正在处理的IPC的调用进程是否已被授予特定权限。

int checkCallingUriPermission(Uri uri, int modeFlags)

确定调用进程和用户标识是否已被授予访问特定URI的权限。

int checkPermission(String permission, int pid, int uid)

确定是否允许给定的权限用于系统中运行的特定进程和用户标识。

int checkSelfPermission(String permission)

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

int checkUriPermission(Uri uri, String readPermission, String writePermission, int pid, int uid, int modeFlags)

检查Uri和普通权限。

int checkUriPermission(Uri uri, int pid, int uid, int modeFlags)

确定是否已授予特定进程和用户标识访问特定URI的权限。

void clearWallpaper()

此方法在API级别23中已弃用。请改为使用WallpaperManager.clear()

此方法要求调用方拥有权限SET_WALLPAPER

Context createConfigurationContext(Configuration overrideConfiguration)

为当前上下文返回一个新的Context对象,但其资源被调整以匹配给定的配置。

Context createDeviceProtectedStorageContext()

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

Context createDisplayContext(Display display)

为当前上下文返回一个新的Context对象,但其资源被调整为匹配给定Display的指标。

Context createPackageContext(String packageName, int flags)

为给定的应用程序名称返回一个新的Context对象。

String[] databaseList()

返回一个字符串数组,命名与此Context的应用程序包关联的专用数据库。

boolean deleteDatabase(String name)

删除与此Context的应用程序包关联的现有私有SQLiteDatabase。

boolean deleteFile(String name)

删除与此Context的应用程序包关联的给定私人文件。

boolean deleteSharedPreferences(String name)

删除现有的共享首选项文件。

void enforceCallingOrSelfPermission(String permission, String message)

如果你和你正在处理的IPC的调用过程都没有被授予特定的权限,则抛出 SecurityException

void enforceCallingOrSelfUriPermission(Uri uri, int modeFlags, String message)

如果IPC 或您的调用进程没有被授予访问特定URI的权限,则抛出 SecurityException

void enforceCallingPermission(String permission, String message)

如果您正在处理的IPC的调用过程尚未获得特定权限,请抛出 SecurityException

void enforceCallingUriPermission(Uri uri, int modeFlags, String message)

如果调用进程和用户标识没有被授予访问特定URI的权限,则抛出 SecurityException

void enforcePermission(String permission, int pid, int uid, String message)

如果在系统中运行的特定进程和用户标识不允许给定权限,则抛出 SecurityException

void enforceUriPermission(Uri uri, String readPermission, String writePermission, int pid, int uid, int modeFlags, String message)

强制执行Uri和普通权限。

void enforceUriPermission(Uri uri, int pid, int uid, int modeFlags, String message)

如果某个特定的进程和用户标识没有被授予访问特定URI的权限,则抛出 SecurityException

String[] fileList()

返回一个字符串数组,命名与此Context的应用程序包关联的私有文件。

Context getApplicationContext()

返回当前进程的单个全局应用程序对象的上下文。

ApplicationInfo getApplicationInfo()

返回此上下文包的完整应用程序信息。

AssetManager getAssets()

返回应用程序包的AssetManager实例。

Context getBaseContext()
File getCacheDir()

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

ClassLoader getClassLoader()

返回一个你可以用来检索这个包中的类的类加载器。

File getCodeCacheDir()

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

ContentResolver getContentResolver()

为你的应用程序包返回一个ContentResolver实例。

File getDataDir()

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

File getDatabasePath(String name)

返回存储使用 openOrCreateDatabase(String, int, SQLiteDatabase.CursorFactory)创建的数据库的文件系统上的绝对路径。

File getDir(String name, int mode)

根据需要检索,创建应用程序可以放置自己的自定义数据文件的新目录。

File getExternalCacheDir()

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

File[] getExternalCacheDirs()

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

File getExternalFilesDir(String type)

返回应用程序可以放置其拥有的持久性文件的主共享/外部存储设备上目录的绝对路径。

File[] getExternalFilesDirs(String type)

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

File[] getExternalMediaDirs()

返回应用程序可放置媒体文件的所有共享/外部存储设备上特定于应用程序的目录的绝对路径。

File getFileStreamPath(String name)

返回存储使用 openFileOutput(String, int)创建的文件的文件系统上的绝对路径。

File getFilesDir()

返回存储使用 openFileOutput(String, int)创建的文件的文件系统上目录的绝对路径。

Looper getMainLooper()

返回当前进程主线程的Looper。

File getNoBackupFilesDir()

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

File getObbDir()

返回此应用程序的OBB文件(如果有)的主要共享/外部存储目录。

File[] getObbDirs()

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

String getPackageCodePath()

返回此上下文的主要Android包的完整路径。

PackageManager getPackageManager()

返回PackageManager实例以查找全局包信息。

String getPackageName()

返回此应用程序包的名称。

String getPackageResourcePath()

返回此上下文的主要Android包的完整路径。

Resources getResources()

返回应用程序包的资源实例。

SharedPreferences getSharedPreferences(String name, int mode)

检索并保存首选项文件'name'的内容,返回一个SharedPreferences,通过它可以检索和修改其值。

Object getSystemService(String name)

按名称将句柄返回到系统级服务。

String getSystemServiceName(Class<?> serviceClass)

获取由指定的类表示的系统级服务的名称。

Resources.Theme getTheme()

返回与此上下文关联的主题对象。

Drawable getWallpaper()

此方法在API级别23中已弃用。请改为使用WallpaperManager.get()

int getWallpaperDesiredMinimumHeight()

此方法在API级别23中已弃用。请改为使用WallpaperManager.getDesiredMinimumHeight()

int getWallpaperDesiredMinimumWidth()

此方法在API级别23中已弃用。请改为使用WallpaperManager.getDesiredMinimumWidth()

void grantUriPermission(String toPackage, Uri uri, int modeFlags)

无论该软件包是否具有访问Uri内容提供者的一般权限,都可以授予访问另一个软件包的特定Uri的权限。

boolean isDeviceProtectedStorage()

指示此Context的存储API是否受设备保护存储支持。

boolean isRestricted()

指示此上下文是否受限制。

boolean moveDatabaseFrom(Context sourceContext, String name)

将现有数据库文件从给定的源存储上下文移动到此上下文。

boolean moveSharedPreferencesFrom(Context sourceContext, String name)

将现有的共享首选项文件从给定的源存储上下文移至此上下文。

FileInputStream openFileInput(String name)

打开与此Context的应用程序包关联的私人文件以供阅读。

FileOutputStream openFileOutput(String name, int mode)

打开与此Context的应用程序包关联的私有文件以进行写入。

SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory, DatabaseErrorHandler errorHandler)

打开与此Context的应用程序包关联的新私有SQLiteDatabase。

SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory)

打开与此Context的应用程序包关联的新私有SQLiteDatabase。

Drawable peekWallpaper()

此方法在API级别23中已弃用。请改用WallpaperManager.peek()

Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter)

注册BroadcastReceiver以在主要活动线程中运行。

Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, String broadcastPermission, Handler scheduler)

注册以接收意图广播,以在 调度程序的上下文中运行。

void removeStickyBroadcast(Intent intent)

此方法在API级别23中已弃用。不应使用粘性广播。 它们不提供安全性(任何人都可以访问它们),没有保护(任何人都可以修改它们)以及其他许多问题。 推荐的模式是使用非粘性广播来报告某些事情已经发生变化,另一种机制是应用程序在需要时检索当前值。

void removeStickyBroadcastAsUser(Intent intent, UserHandle user)

此方法在API级别23中已弃用。不应使用粘性广播。 它们不提供安全性(任何人都可以访问它们),没有保护(任何人都可以修改它们)以及其他许多问题。 推荐的模式是使用非粘性广播来报告某些事情已经发生变化,另一种机制是应用程序在需要时检索当前值。

void revokeUriPermission(Uri uri, int modeFlags)

删除所有权限以访问之前添加了 grantUriPermission(String, Uri, int)的特定内容提供商Uri。

void sendBroadcast(Intent intent, String receiverPermission)

将给定的意图广播给所有感兴趣的BroadcastReceivers,允许强制执行可选的必需权限。

void sendBroadcast(Intent intent)

将给定的意图广播给所有感兴趣的BroadcastReceivers。

void sendBroadcastAsUser(Intent intent, UserHandle user)

版本 sendBroadcast(Intent) ,允许您指定广播将发送到的用户。

void sendBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission)

版本 sendBroadcast(Intent, String) ,允许您指定广播将发送到的用户。

void sendOrderedBroadcast(Intent intent, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)

版本为 sendBroadcast(Intent) ,可让您从广播中接收数据。

void sendOrderedBroadcast(Intent intent, String receiverPermission)

将给定的意图广播给所有感兴趣的BroadcastReceivers,一次发送一个,让更多的首选接收者在将广播发送给次优先接收者之前消费广播。

void sendOrderedBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)

版本 sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle) ,它允许您指定广播将被发送到的用户。

void sendStickyBroadcast(Intent intent)

此方法在API级别23中已弃用。不应使用粘性广播。 它们不提供安全性(任何人都可以访问它们),没有保护(任何人都可以修改它们)以及其他许多问题。 推荐的模式是使用非粘性广播来报告某些事情已经发生变化,另一种机制是应用程序在需要时检索当前值。

void sendStickyBroadcastAsUser(Intent intent, UserHandle user)

此方法在API级别23中已弃用。不应使用粘性广播。 它们不提供安全性(任何人都可以访问它们),没有保护(任何人都可以修改它们)以及其他许多问题。 推荐的模式是使用非粘性广播来报告某些事情已经发生变化,另一种机制是应用程序在需要时检索当前值。

void sendStickyOrderedBroadcast(Intent intent, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)

此方法在API级别23中已弃用。不应使用粘性广播。 它们不提供安全性(任何人都可以访问它们),没有保护(任何人都可以修改它们)以及其他许多问题。 推荐的模式是使用非粘性广播来报告某些事情已经发生变化,另一种机制是应用程序在需要时检索当前值。

void sendStickyOrderedBroadcastAsUser(Intent intent, UserHandle user, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)

此方法在API级别23中已弃用。不应使用粘性广播。 它们不提供安全性(任何人都可以访问它们),没有保护(任何人都可以修改它们)以及其他许多问题。 推荐的模式是使用非粘性广播来报告某些事情已经发生变化,另一种机制是应用程序在需要时检索当前值。

void setTheme(int resid)

为此上下文设置基本主题。

void setWallpaper(Bitmap bitmap)

此方法在API级别23中已弃用。请改为使用WallpaperManager.set()

此方法要求调用方拥有权限SET_WALLPAPER

void setWallpaper(InputStream data)

此方法在API级别23中已弃用。请改为使用WallpaperManager.set()

此方法要求调用方拥有权限SET_WALLPAPER

void startActivities(Intent[] intents, Bundle options)

启动多项新活动。

void startActivities(Intent[] intents)

与没有指定选项的 startActivities(Intent[], Bundle)相同。

void startActivity(Intent intent)

与没有指定选项的 startActivity(Intent, Bundle)相同。

void startActivity(Intent intent, Bundle options)

启动一项新活动。

boolean startInstrumentation(ComponentName className, String profileFile, Bundle arguments)

开始执行 Instrumentation类。

void startIntentSender(IntentSender intent, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags)

与没有指定选项的 startIntentSender(IntentSender, Intent, int, int, int, Bundle)相同。

void startIntentSender(IntentSender intent, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, Bundle options)

startActivity(Intent, Bundle)一样,但需要启动一个IntentSender。

ComponentName startService(Intent service)

请求启动给定的应用程序服务。

boolean stopService(Intent name)

请求停止给定的应用程序服务。

void unbindService(ServiceConnection conn)

断开应用程序服务。

void unregisterReceiver(BroadcastReceiver receiver)

取消注册以前注册的BroadcastReceiver。

Protected methods

void attachBaseContext(Context base)

为此ContextWrapper设置基本上下文。

Inherited methods

From class android.content.Context
From class java.lang.Object

Public constructors

ContextWrapper

Added in API level 1
ContextWrapper (Context base)

Parameters
base Context

Public methods

bindService

Added in API level 1
boolean bindService (Intent service, 
                ServiceConnection conn, 
                int flags)

连接到应用程序服务,根据需要创建它。 这定义了应用程序和服务之间的依赖关系。 给定的conn在创建时会收到服务对象,并被告知它是否会死亡并重新启动。 只要存在调用上下文,该服务就会被系统认为是必需的。 例如,如果此Context是一个已停止的Activity,则该服务将不需要继续运行,直到活动恢复。

如果您没有绑定到给定服务的权限,则此函数将抛出 SecurityException

注意:此方法不能从BroadcastReceiver组件调用 您可以用来从BroadcastReceiver与服务进行通信的模式是使用包含要发送的命令的参数调用startService(Intent) ,该服务在完成该命令时调用其stopSelf(int)方法。 请参阅API演示应用程序/服务/服务启动参数控制器以获取此示例。 但是,从已注册registerReceiver(BroadcastReceiver, IntentFilter)的BroadcastReceiver使用此方法是可以的,因为此BroadcastReceiver的生命周期与另一个对象(注册它的对象)有关。

Parameters
service Intent: Identifies the service to connect to. The Intent may specify either an explicit component name, or a logical description (action, category, etc) to match an IntentFilter published by a service.
conn ServiceConnection: Receives information as the service is started and stopped. This must be a valid ServiceConnection object; it must not be null.
flags int: Operation options for the binding. May be 0, BIND_AUTO_CREATE, BIND_DEBUG_UNBIND, BIND_NOT_FOREGROUND, BIND_ABOVE_CLIENT, BIND_ALLOW_OOM_MANAGEMENT, or BIND_WAIVE_PRIORITY.
Returns
boolean If you have successfully bound to the service, true is returned; false is returned if the connection is not made so you will not receive the service object.

checkCallingOrSelfPermission

Added in API level 1
int checkCallingOrSelfPermission (String permission)

确定IPC的调用过程还是您已被授予特定权限。 这与checkCallingPermission(String)相同,只是如果您当前checkCallingPermission(String) ,则会授予您自己的权限。 小心使用!

Parameters
permission String: The name of the permission being checked.
Returns
int PERMISSION_GRANTED if the calling pid/uid is allowed that permission, or PERMISSION_DENIED if it is not.

checkCallingOrSelfUriPermission

Added in API level 1
int checkCallingOrSelfUriPermission (Uri uri, 
                int modeFlags)

确定IPC的调用进程或您是否被授予访问特定URI的权限。 这与checkCallingUriPermission(Uri, int)相同,只是如果您当前checkCallingUriPermission(Uri, int) ,则会授予您自己的权限。 小心使用!

Parameters
uri Uri: The uri that is being checked.
modeFlags int: The type of access to grant. May be one or both of Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION.
Returns
int PERMISSION_GRANTED if the caller is allowed to access that uri, or PERMISSION_DENIED if it is not.

checkCallingPermission

Added in API level 1
int checkCallingPermission (String permission)

确定您正在处理的IPC的调用进程是否已被授予特定权限。 这与使用由getCallingPid()getCallingUid()返回的pid和uid调用checkPermission(String, int, int)基本相同。 一个重要的区别是,如果您目前没有处理IPC,该功能将始终失败。 这样做是为了防止意外泄漏的权限; 您可以使用checkCallingOrSelfPermission(String)来避免这种保护。

Parameters
permission String: The name of the permission being checked.
Returns
int PERMISSION_GRANTED if the calling pid/uid is allowed that permission, or PERMISSION_DENIED if it is not.

checkCallingUriPermission

Added in API level 1
int checkCallingUriPermission (Uri uri, 
                int modeFlags)

确定调用进程和用户标识是否已被授予访问特定URI的权限。 这与使用由getCallingPid()getCallingUid()返回的pid和uid调用checkUriPermission(Uri, int, int, int)基本相同。 一个重要的区别是,如果您目前没有处理IPC,该功能将始终失败。

Parameters
uri Uri: The uri that is being checked.
modeFlags int: The type of access to grant. May be one or both of Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION.
Returns
int PERMISSION_GRANTED if the caller is allowed to access that uri, or PERMISSION_DENIED if it is not.

checkPermission

Added in API level 1
int checkPermission (String permission, 
                int pid, 
                int uid)

确定是否允许给定的权限用于系统中运行的特定进程和用户标识。

Parameters
permission String: The name of the permission being checked.
pid int: The process ID being checked against. Must be > 0.
uid int: The user ID being checked against. A uid of 0 is the root user, which will pass every permission check.
Returns
int PERMISSION_GRANTED if the given pid/uid is allowed that permission, or PERMISSION_DENIED if it is not.

checkSelfPermission

Added in API level 23
int checkSelfPermission (String permission)

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

Parameters
permission String: The name of the permission being checked.
Returns
int PERMISSION_GRANTED if you have the permission, or PERMISSION_DENIED if not.

checkUriPermission

Added in API level 1
int checkUriPermission (Uri uri, 
                String readPermission, 
                String writePermission, 
                int pid, 
                int uid, 
                int modeFlags)

检查Uri和普通权限。 这允许您在一个呼叫中同时执行checkPermission(String, int, int)checkUriPermission(Uri, int, int, int)

Parameters
uri Uri: The Uri whose permission is to be checked, or null to not do this check.
readPermission String: The permission that provides overall read access, or null to not do this check.
writePermission String: The permission that provides overall write access, or null to not do this check.
pid int: The process ID being checked against. Must be > 0.
uid int: The user ID being checked against. A uid of 0 is the root user, which will pass every permission check.
modeFlags int: The type of access to grant. May be one or both of Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION.
Returns
int PERMISSION_GRANTED if the caller is allowed to access that uri or holds one of the given permissions, or PERMISSION_DENIED if it is not.

checkUriPermission

Added in API level 1
int checkUriPermission (Uri uri, 
                int pid, 
                int uid, 
                int modeFlags)

确定是否已授予特定进程和用户标识访问特定URI的权限。 这只会检查已被显式授予的权限 - 如果给定的进程/ uid对URI的内容提供者具有更多的一般访问权限,则此检查将始终失败。

Parameters
uri Uri: The uri that is being checked.
pid int: The process ID being checked against. Must be > 0.
uid int: The user ID being checked against. A uid of 0 is the root user, which will pass every permission check.
modeFlags int: The type of access to grant. May be one or both of Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION.
Returns
int PERMISSION_GRANTED if the given pid/uid is allowed to access that uri, or PERMISSION_DENIED if it is not.

clearWallpaper

Added in API level 1
void clearWallpaper ()

此方法在API级别23中已弃用。
改为使用WallpaperManager.clear()

此方法要求主叫方拥有权限 SET_WALLPAPER

Throws
IOException

createConfigurationContext

Added in API level 17
Context createConfigurationContext (Configuration overrideConfiguration)

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

Parameters
overrideConfiguration Configuration: A Configuration specifying what values to modify in the base Configuration of the original Context's resources. If the base configuration changes (such as due to an orientation change), the resources of this context will also change except for those that have been explicitly overridden with a value here.
Returns
Context A Context with the given configuration override.

createDeviceProtectedStorageContext

Added in API level 24
Context createDeviceProtectedStorageContext ()

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

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

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

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

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

Returns
Context

createDisplayContext

Added in API level 17
Context createDisplayContext (Display display)

为当前上下文返回一个新的Context对象,但其资源被调整为匹配给定Display的指标。 每次调用此方法都会返回一个Context对象的新实例; 上下文对象不共享,但是常见的状态(ClassLoader,用于相同配置的其他资源)可能是这样的,上下文本身可以是相当轻量级的。 返回的显示上下文提供了一个WindowManager (请参阅getSystemService(String) ),其配置为在给定的显示器上显示窗口。 WindowManager的getDefaultDisplay()方法可用于从返回的上下文中检索显示。

Parameters
display Display: A Display object specifying the display for whose metrics the Context's resources should be tailored and upon which new windows should be shown.
Returns
Context A Context for the display.

createPackageContext

Added in API level 1
Context createPackageContext (String packageName, 
                int flags)

为给定的应用程序名称返回一个新的Context对象。 此上下文与启动时的命名应用程序相同,其中包含相同的资源和类加载器。 每次调用此方法都会返回一个Context对象的新实例; 上下文对象不共享,但它们共享公共状态(Resources,ClassLoader等),因此Context实例本身相当轻量级。

如果没有给定包名称的应用程序,则抛出 PackageManager.NameNotFoundException

如果出于安全原因无法将请求的上下文加载到调用者进程中,则会抛出 SecurityException (有关更多信息,请参阅 CONTEXT_INCLUDE_CODE )。

Parameters
packageName String: Name of the application's package.
flags int: Option flags, one of CONTEXT_INCLUDE_CODE or CONTEXT_IGNORE_SECURITY.
Returns
Context A Context for the application.
Throws
PackageManager.NameNotFoundException

databaseList

Added in API level 1
String[] databaseList ()

返回一个字符串数组,命名与此Context的应用程序包关联的专用数据库。

Returns
String[] Array of strings naming the private databases.

deleteDatabase

Added in API level 1
boolean deleteDatabase (String name)

删除与此Context的应用程序包关联的现有私有SQLiteDatabase。

Parameters
name String: The name (unique in the application package) of the database.
Returns
boolean true if the database was successfully deleted; else false.

deleteFile

Added in API level 1
boolean deleteFile (String name)

删除与此Context的应用程序包关联的给定私人文件。

Parameters
name String: The name of the file to delete; can not contain path separators.
Returns
boolean true if the file was successfully deleted; else false.

deleteSharedPreferences

Added in API level 24
boolean deleteSharedPreferences (String name)

删除现有的共享首选项文件。

Parameters
name String: The name (unique in the application package) of the shared preferences file.
Returns
boolean true if the shared preferences file was successfully deleted; else false.

enforceCallingOrSelfPermission

Added in API level 1
void enforceCallingOrSelfPermission (String permission, 
                String message)

如果您和您正在处理的IPC的调用过程都SecurityException授予特定权限,则抛出SecurityException 这与enforceCallingPermission(String, String)相同,只是如果您当前enforceCallingPermission(String, String) ,则会授予您自己的权限。 小心使用!

Parameters
permission String: The name of the permission being checked.
message String: A message to include in the exception if it is thrown.

enforceCallingOrSelfUriPermission

Added in API level 1
void enforceCallingOrSelfUriPermission (Uri uri, 
                int modeFlags, 
                String message)

如果IPC的调用进程或您未被授予访问特定URI的权限,则抛出SecurityException 这与enforceCallingUriPermission(Uri, int, String)相同,只是如果您当前enforceCallingUriPermission(Uri, int, String) ,则会授予您自己的权限。 小心使用!

Parameters
uri Uri: The uri that is being checked.
modeFlags int: The type of access to grant. May be one or both of Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION.
message String: A message to include in the exception if it is thrown.

enforceCallingPermission

Added in API level 1
void enforceCallingPermission (String permission, 
                String message)

如果您正在处理的IPC的调用过程尚未获得特定许可,请抛出SecurityException 这与使用由getCallingPid()getCallingUid()返回的pid和uid调用enforcePermission(String, int, int, String)基本相同。 一个重要的区别是,如果您当前没有处理IPC,则此函数将始终引发SecurityException。 这样做是为了防止意外泄漏的权限; 您可以使用enforceCallingOrSelfPermission(String, String)来避免这种保护。

Parameters
permission String: The name of the permission being checked.
message String: A message to include in the exception if it is thrown.

enforceCallingUriPermission

Added in API level 1
void enforceCallingUriPermission (Uri uri, 
                int modeFlags, 
                String message)

如果调用进程和用户标识没有被授予访问特定URI的权限,则抛出SecurityException 这与使用由getCallingPid()getCallingUid()返回的pid和uid调用enforceUriPermission(Uri, int, int, int, String)基本相同。 一个重要的区别是,如果您当前没有处理IPC,则此函数将始终引发SecurityException。

Parameters
uri Uri: The uri that is being checked.
modeFlags int: The type of access to grant. May be one or both of Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION.
message String: A message to include in the exception if it is thrown.

enforcePermission

Added in API level 1
void enforcePermission (String permission, 
                int pid, 
                int uid, 
                String message)

如果在系统中运行的特定进程和用户标识不允许给定权限,则抛出 SecurityException

Parameters
permission String: The name of the permission being checked.
pid int: The process ID being checked against. Must be > 0.
uid int: The user ID being checked against. A uid of 0 is the root user, which will pass every permission check.
message String: A message to include in the exception if it is thrown.

enforceUriPermission

Added in API level 1
void enforceUriPermission (Uri uri, 
                String readPermission, 
                String writePermission, 
                int pid, 
                int uid, 
                int modeFlags, 
                String message)

强制执行Uri和普通权限。 这允许您在一个呼叫中同时执行enforcePermission(String, int, int, String)enforceUriPermission(Uri, int, int, int, String)

Parameters
uri Uri: The Uri whose permission is to be checked, or null to not do this check.
readPermission String: The permission that provides overall read access, or null to not do this check.
writePermission String: The permission that provides overall write access, or null to not do this check.
pid int: The process ID being checked against. Must be > 0.
uid int: The user ID being checked against. A uid of 0 is the root user, which will pass every permission check.
modeFlags int: The type of access to grant. May be one or both of Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION.
message String: A message to include in the exception if it is thrown.

enforceUriPermission

Added in API level 1
void enforceUriPermission (Uri uri, 
                int pid, 
                int uid, 
                int modeFlags, 
                String message)

如果某个特定的进程和用户标识未被授予访问特定URI的权限,则抛出SecurityException 这只会检查已被显式授予的权限 - 如果给定的进程/ uid对URI的内容提供者具有更多的一般访问权限,则此检查将始终失败。

Parameters
uri Uri: The uri that is being checked.
pid int: The process ID being checked against. Must be > 0.
uid int: The user ID being checked against. A uid of 0 is the root user, which will pass every permission check.
modeFlags int: The type of access to grant. May be one or both of Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION.
message String: A message to include in the exception if it is thrown.

fileList

Added in API level 1
String[] fileList ()

返回一个字符串数组,命名与此Context的应用程序包关联的私有文件。

Returns
String[] Array of strings naming the private files.

getApplicationContext

Added in API level 1
Context getApplicationContext ()

返回当前进程的单个全局应用程序对象的上下文。 这通常只应用于需要生命周期与当前上下文分离的Context,该生命周期与进程的生命周期相关,而不是当前组件。

考虑如何与 registerReceiver(BroadcastReceiver, IntentFilter)交互:

  • 如果从Activity上下文中使用,接收者正在该活动中注册。 这意味着您需要在活动完成之前取消注册; 事实上,如果你不这样做,框架会清除你的泄漏注册,因为它会删除活动并记录错误。 因此,如果使用Activity上下文来注册一个静态的接收者(对进程是全局的,而不是与一个Activity实例关联的),那么在你使用的活动被销毁的任何点上,你的注册将被删除。

  • 如果从此处返回的Context使用,则接收者正在注册与您的应用程序关联的全局状态。 因此它永远不会被注销。 如果接收器与静态数据相关联,而不是特定组件,则这是必要的。 但是,如果您忘记取消注册,取消绑定等操作,则在别处使用ApplicationContext可能会导致严重泄漏。

Returns
Context

getApplicationInfo

Added in API level 4
ApplicationInfo getApplicationInfo ()

返回此上下文包的完整应用程序信息。

Returns
ApplicationInfo

getAssets

Added in API level 1
AssetManager getAssets ()

返回应用程序包的AssetManager实例。

注意:此方法的实现应该返回一个AssetManager实例,该实例与由getResources()返回的Resources实例一致。 例如,他们应该共享相同的Configuration对象。

Returns
AssetManager an AssetManager instance for the application's package

getBaseContext

Added in API level 1
Context getBaseContext ()

Returns
Context the base context as set by the constructor or setBaseContext

getCacheDir

Added in API level 1
File getCacheDir ()

返回文件系统上特定于应用程序的缓存目录的绝对路径。 这些文件将在设备存储空间不足时被首先删除。 这些文件将被删除时无法保证。

注意:您不应该依赖系统为您删除这些文件; 对于缓存文件占用的空间量,您应始终拥有合理的最大值(例如1 MB),并在超过该空间时修剪这些文件。

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

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

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

getClassLoader

Added in API level 1
ClassLoader getClassLoader ()

返回一个你可以用来检索这个包中的类的类加载器。

Returns
ClassLoader

getCodeCacheDir

Added in API level 21
File getCodeCacheDir ()

返回专用于存储缓存代码的文件系统上特定于应用程序的缓存目录的绝对路径。 无论何时升级您的特定应用程序以及升级整个平台时,系统都会删除存储在此位置的所有文件。

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

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

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

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

getContentResolver

Added in API level 1
ContentResolver getContentResolver ()

为你的应用程序包返回一个ContentResolver实例。

Returns
ContentResolver

getDataDir

Added in API level 24
File getDataDir ()

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

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

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

Returns
File

getDatabasePath

Added in API level 1
File getDatabasePath (String name)

返回存储使用 openOrCreateDatabase(String, int, SQLiteDatabase.CursorFactory)创建的数据库的文件系统上的绝对路径。

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

Parameters
name String: The name of the database for which you would like to get its path.
Returns
File An absolute path to the given database.

getDir

Added in API level 1
File getDir (String name, 
                int mode)

根据需要检索,创建应用程序可以放置自己的自定义数据文件的新目录。 您可以使用返回的File对象来创建和访问此目录中的文件。 请注意,通过File对象创建的文件只能由您自己的应用程序访问; 您只能设置整个目录的模式,而不是单个文件。

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

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

Parameters
name String: Name of the directory to retrieve. This is a directory that is created as part of your application data.
mode int: Operating mode. Use 0 or MODE_PRIVATE for the default operation.
Returns
File A File object for the requested directory. The directory will have been created if it does not already exist.

getExternalCacheDir

Added in API level 8
File getExternalCacheDir ()

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

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

  • 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 JELLY_BEAN_MR1 or later and isExternalStorageEmulated(File) returns true.
  • Shared storage may not always be available, since removable media can be ejected by the user. Media state can be checked using getExternalStorageState(File).
  • There is no security enforced with these files. For example, any application holding WRITE_EXTERNAL_STORAGE can write to these files.

如果模拟共享存储设备(由 isExternalStorageEmulated(File)决定),则其内容由专用用户数据分区支持,这意味着在此处存储数据没有多大好处,而不是由 getCacheDir()返回的专用目录。

KITKAT开始,不需要读取或写入返回路径的权限; 它始终可供调用应用程序访问。 这仅适用于为调用应用程序的包名称生成的路径。 要访问属于其他包的路径,需要WRITE_EXTERNAL_STORAGE和/或READ_EXTERNAL_STORAGE

在具有多个用户的设备上(如UserManager ),每个用户都有自己独立的共享存储。 应用程序只能访问正在运行的用户的共享存储。

如果插入不同的共享存储介质,返回的路径可能随时间而改变,因此只应保留相对路径。

Returns
File the absolute path to application-specific directory. May return null if shared storage is not currently available.

getExternalCacheDirs

Added in API level 19
File[] getExternalCacheDirs ()

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

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

  • 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 JELLY_BEAN_MR1 or later and isExternalStorageEmulated(File) returns true.
  • Shared storage may not always be available, since removable media can be ejected by the user. Media state can be checked using getExternalStorageState(File).
  • There is no security enforced with these files. For example, any application holding WRITE_EXTERNAL_STORAGE can write to these files.

如果模拟共享存储设备(由 isExternalStorageEmulated(File)确定),则其内容由专用用户数据分区支持,这意味着在此处存储数据没有多大好处,而不是由 getCacheDir()返回的专用目录。

这里返回的共享存储设备被认为是设备的稳定部分,包括保护盖下的物理介质插槽。 返回的路径不包括瞬时设备,例如连接到手持设备的USB闪存驱动器。

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

调用应用程序无需额外的权限即可读取或写入返回路径下的文件。 在辅助外部存储设备上写入这些路径之外的访问权限不可用。

如果插入不同的共享存储介质,返回的路径可能随时间而改变,因此只应保持相对路径。

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().

getExternalFilesDir

Added in API level 8
File getExternalFilesDir (String type)

返回应用程序可以放置其拥有的持久性文件的主共享/外部存储设备上目录的绝对路径。 这些文件是应用程序的内部文件,对于用户而言通常不可见为媒体。

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

  • Shared storage may not always be available, since removable media can be ejected by the user. Media state can be checked using getExternalStorageState(File).
  • There is no security enforced with these files. For example, any application holding WRITE_EXTERNAL_STORAGE can write to these files.

如果模拟共享存储设备(由 isExternalStorageEmulated(File)确定),则其内容由专用用户数据分区支持,这意味着在这里存储数据没有多大好处,而不是由 getFilesDir()等返回的专用目录。

KITKAT开始,不需要读取或写入返回路径的权限; 它始终可供调用应用程序访问。 这仅适用于为调用应用程序的包名称生成的路径。 要访问属于其他包的路径,则需要WRITE_EXTERNAL_STORAGE和/或READ_EXTERNAL_STORAGE

在具有多个用户的设备上(如UserManager ),每个用户都有自己独立的共享存储。 应用程序只能访问正在运行的用户的共享存储。

如果插入不同的共享存储介质,返回的路径可能随时间而改变,因此只应保留相对路径。

以下是操作应用程序共享存储中的文件的典型代码示例:

void createExternalStoragePrivateFile() {
    // Create a path where we will place our private file on external
    // storage.
    File file = new File(getExternalFilesDir(null), "DemoFile.jpg");

    try {
        // Very simple code to copy a picture from the application's
        // resource into the external file.  Note that this code does
        // no error checking, and assumes the picture is small (does not
        // try to copy it in chunks).  Note that if external storage is
        // not currently mounted this will silently fail.
        InputStream is = getResources().openRawResource(R.drawable.balloons);
        OutputStream os = new FileOutputStream(file);
        byte[] data = new byte[is.available()];
        is.read(data);
        os.write(data);
        is.close();
        os.close();
    } catch (IOException e) {
        // Unable to create file, likely because external storage is
        // not currently mounted.
        Log.w("ExternalStorage", "Error writing " + file, e);
    }
}

void deleteExternalStoragePrivateFile() {
    // Get path for the file on external storage.  If external
    // storage is not currently mounted this will fail.
    File file = new File(getExternalFilesDir(null), "DemoFile.jpg");
    if (file != null) {
        file.delete();
    }
}

boolean hasExternalStoragePrivateFile() {
    // Get path for the file on external storage.  If external
    // storage is not currently mounted this will fail.
    File file = new File(getExternalFilesDir(null), "DemoFile.jpg");
    if (file != null) {
        return file.exists();
    }
    return false;
}

如果您为此函数提供非null 类型 ,则返回的文件将成为给定类型的子目录的路径。 尽管媒体扫描程序不会自动扫描这些文件,但可以使用MediaScannerConnection.scanFile将它们明确添加到媒体数据库中。 请注意,这与Environment.getExternalStoragePublicDirectory() ,后者提供所有应用程序共享的媒体目录。 这里返回的目录由应用程序拥有,当应用程序被卸载时,它们的内容将被删除。 Environment.getExternalStoragePublicDirectory()不同,此处返回的目录将自动为您创建。

以下是处理应用程序共享存储中的图片并将其添加到媒体数据库的典型代码示例:

void createExternalStoragePrivatePicture() {
    // Create a path where we will place our picture in our own private
    // pictures directory.  Note that we don't really need to place a
    // picture in DIRECTORY_PICTURES, since the media scanner will see
    // all media in these directories; this may be useful with other
    // media types such as DIRECTORY_MUSIC however to help it classify
    // your media for display to the user.
    File path = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
    File file = new File(path, "DemoPicture.jpg");

    try {
        // Very simple code to copy a picture from the application's
        // resource into the external file.  Note that this code does
        // no error checking, and assumes the picture is small (does not
        // try to copy it in chunks).  Note that if external storage is
        // not currently mounted this will silently fail.
        InputStream is = getResources().openRawResource(R.drawable.balloons);
        OutputStream os = new FileOutputStream(file);
        byte[] data = new byte[is.available()];
        is.read(data);
        os.write(data);
        is.close();
        os.close();

        // Tell the media scanner about the new file so that it is
        // immediately available to the user.
        MediaScannerConnection.scanFile(this,
                new String[] { file.toString() }, null,
                new MediaScannerConnection.OnScanCompletedListener() {
            public void onScanCompleted(String path, Uri uri) {
                Log.i("ExternalStorage", "Scanned " + path + ":");
                Log.i("ExternalStorage", "-> uri=" + uri);
            }
        });
    } catch (IOException e) {
        // Unable to create file, likely because external storage is
        // not currently mounted.
        Log.w("ExternalStorage", "Error writing " + file, e);
    }
}

void deleteExternalStoragePrivatePicture() {
    // Create a path where we will place our picture in the user's
    // public pictures directory and delete the file.  If external
    // storage is not currently mounted this will fail.
    File path = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
    if (path != null) {
        File file = new File(path, "DemoPicture.jpg");
        file.delete();
    }
}

boolean hasExternalStoragePrivatePicture() {
    // Create a path where we will place our picture in the user's
    // public pictures directory and check if the file exists.  If
    // external storage is not currently mounted this will think the
    // picture doesn't exist.
    File path = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
    if (path != null) {
        File file = new File(path, "DemoPicture.jpg");
        return file.exists();
    }
    return false;
}

Parameters
type String: The type of files directory to return. May be null for the root of the files directory or one of the following constants for a subdirectory: DIRECTORY_MUSIC, DIRECTORY_PODCASTS, DIRECTORY_RINGTONES, DIRECTORY_ALARMS, DIRECTORY_NOTIFICATIONS, DIRECTORY_PICTURES, or DIRECTORY_MOVIES.
Returns
File the absolute path to application-specific directory. May return null if shared storage is not currently available.

getExternalFilesDirs

Added in API level 19
File[] getExternalFilesDirs (String type)

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

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

  • Shared storage may not always be available, since removable media can be ejected by the user. Media state can be checked using getExternalStorageState(File).
  • There is no security enforced with these files. For example, any application holding WRITE_EXTERNAL_STORAGE can write to these files.

如果模拟共享存储设备(由 isExternalStorageEmulated(File)决定),则其内容由专用用户数据分区支持,这意味着在这里存储数据没有多大好处,而不是由 getFilesDir()等返回的专用目录。

这里返回的共享存储设备被认为是设备的稳定部分,包括保护盖下的物理介质插槽。 返回的路径不包括瞬时设备,例如连接到手持设备的USB闪存驱动器。

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

调用应用程序无需额外的权限即可读取或写入返回路径下的文件。 在辅助外部存储设备上写入这些路径之外的访问权限不可用。

如果插入不同的共享存储介质,返回的路径可能随时间而改变,因此只应保留相对路径。

Parameters
type String: The type of files directory to return. May be null for the root of the files directory or one of the following constants for a subdirectory: DIRECTORY_MUSIC, DIRECTORY_PODCASTS, DIRECTORY_RINGTONES, DIRECTORY_ALARMS, DIRECTORY_NOTIFICATIONS, DIRECTORY_PICTURES, or DIRECTORY_MOVIES.
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 getExternalFilesDir(String).

getExternalMediaDirs

Added in API level 21
File[] getExternalMediaDirs ()

返回应用程序可放置媒体文件的所有共享/外部存储设备上特定于应用程序的目录的绝对路径。 通过MediaStore扫描这些文件并将其提供给其他应用程序。

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

  • Shared storage may not always be available, since removable media can be ejected by the user. Media state can be checked using getExternalStorageState(File).
  • There is no security enforced with these files. For example, any application holding WRITE_EXTERNAL_STORAGE can write to these files.

这里返回的共享存储设备被认为是设备的稳定部分,包括保护盖下的物理介质插槽。 返回的路径不包括瞬时设备,例如连接到手持设备的USB闪存驱动器。

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

调用应用程序无需额外的权限即可读取或写入返回路径下的文件。 在辅助外部存储设备上写入这些路径之外的访问权限不可用。

如果插入不同的共享存储介质,返回的路径可能随时间而改变,因此只应保持相对路径。

Returns
File[] the absolute paths to application-specific directories. Some individual paths may be null if that shared storage is not currently available.

getFileStreamPath

Added in API level 1
File getFileStreamPath (String name)

返回存储使用 openFileOutput(String, int)创建的文件的文件系统上的绝对路径。

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

Parameters
name String: The name of the file for which you would like to get its path.
Returns
File An absolute path to the given file.

getFilesDir

Added in API level 1
File getFilesDir ()

返回存储使用 openFileOutput(String, int)创建的文件的文件系统上目录的绝对路径。

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

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

Returns
File The path of the directory holding application files.

getMainLooper

Added in API level 1
Looper getMainLooper ()

返回当前进程主线程的Looper。 这是用于调用应用程序组件(活动,服务等)的线程。

根据定义,此方法返回与调用 Looper.getMainLooper()所获得的结果相同的结果。

Returns
Looper The main looper.

getNoBackupFilesDir

Added in API level 21
File getNoBackupFilesDir ()

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

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

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

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

getObbDir

Added in API level 11
File getObbDir ()

返回此应用程序的OBB文件(如果有)的主要共享/外部存储目录。 请注意,如果应用程序没有任何OBB文件,则该目录可能不存在。

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

  • Shared storage may not always be available, since removable media can be ejected by the user. Media state can be checked using getExternalStorageState(File).
  • There is no security enforced with these files. For example, any application holding WRITE_EXTERNAL_STORAGE can write to these files.

KITKAT开始,不需要读取或写入返回路径的权限; 它始终可供调用应用程序访问。 这仅适用于为调用应用程序的包名称生成的路径。 要访问属于其他包的路径,则需要WRITE_EXTERNAL_STORAGE和/或READ_EXTERNAL_STORAGE

在具有多个用户的设备上(如UserManager ),多个用户可能共享相同的OBB存储位置。 应用程序应确保在不同用户下运行的多个实例不会相互干扰。

Returns
File the absolute path to application-specific directory. May return null if shared storage is not currently available.

getObbDirs

Added in API level 19
File[] getObbDirs ()

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

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

  • Shared storage may not always be available, since removable media can be ejected by the user. Media state can be checked using getExternalStorageState(File).
  • There is no security enforced with these files. For example, any application holding WRITE_EXTERNAL_STORAGE can write to these files.

这里返回的共享存储设备被认为是设备的稳定部分,包括保护盖下的物理介质插槽。 返回的路径不包括瞬时设备,例如连接到手持设备的USB闪存驱动器。

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

调用应用程序无需额外的权限即可读取或写入返回路径下的文件。 在辅助外部存储设备上写入这些路径之外的访问权限不可用。

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 getObbDir()

getPackageCodePath

Added in API level 1
String getPackageCodePath ()

返回此上下文的主要Android包的完整路径。 Android包是一个ZIP文件,其中包含应用程序的主要代码和资产。

注意:这对于应用程序通常不是很有用,因为它们不应该直接访问文件系统。

Returns
String String Path to the code and assets.

getPackageManager

Added in API level 1
PackageManager getPackageManager ()

返回PackageManager实例以查找全局包信息。

Returns
PackageManager

getPackageName

Added in API level 1
String getPackageName ()

返回此应用程序包的名称。

Returns
String

getPackageResourcePath

Added in API level 1
String getPackageResourcePath ()

返回此上下文的主要Android包的完整路径。 Android包是一个包含应用程序主要资源的ZIP文件。

注意:这对于应用程序通常不是很有用,因为它们不应该直接访问文件系统。

Returns
String String Path to the resources.

getResources

Added in API level 1
Resources getResources ()

返回应用程序包的资源实例。

注意:此方法的实现应该返回一个与由getAssets()返回的AssetManager实例一致的资源实例。 例如,他们应该共享相同的Configuration对象。

Returns
Resources a Resources instance for the application's package

getSharedPreferences

Added in API level 1
SharedPreferences getSharedPreferences (String name, 
                int mode)

检索并保存首选项文件'name'的内容,返回一个SharedPreferences,通过它可以检索和修改其值。 只有一个SharedPreferences对象的实例返回给同一名称的任何调用者,这意味着他们一旦创建就会看到对方的编辑。

Parameters
name String: Desired preferences file. If a preferences file by this name does not exist, it will be created when you retrieve an editor (SharedPreferences.edit()) and then commit changes (Editor.commit()).
mode int: Operating mode. Use 0 or MODE_PRIVATE for the default operation.
Returns
SharedPreferences The single SharedPreferences instance that can be used to retrieve and modify the preference values.

getSystemService

Added in API level 1
Object getSystemService (String name)

按名称将句柄返回到系统级服务。 返回的对象的类因所请求的名称而异。 目前可用的名称是:

WINDOW_SERVICE ("window")
The top-level window manager in which you can place custom windows. The returned object is a WindowManager.
LAYOUT_INFLATER_SERVICE ("layout_inflater")
A LayoutInflater for inflating layout resources in this context.
ACTIVITY_SERVICE ("activity")
A ActivityManager for interacting with the global activity state of the system.
POWER_SERVICE ("power")
A PowerManager for controlling power management.
ALARM_SERVICE ("alarm")
A AlarmManager for receiving intents at the time of your choosing.
NOTIFICATION_SERVICE ("notification")
A NotificationManager for informing the user of background events.
KEYGUARD_SERVICE ("keyguard")
A KeyguardManager for controlling keyguard.
LOCATION_SERVICE ("location")
A LocationManager for controlling location (e.g., GPS) updates.
SEARCH_SERVICE ("search")
A SearchManager for handling search.
VIBRATOR_SERVICE ("vibrator")
A Vibrator for interacting with the vibrator hardware.
CONNECTIVITY_SERVICE ("connection")
A ConnectivityManager for handling management of network connections.
WIFI_SERVICE ("wifi")
A WifiManager for management of Wi-Fi connectivity.
WIFI_P2P_SERVICE ("wifip2p")
A WifiP2pManager for management of Wi-Fi Direct connectivity.
INPUT_METHOD_SERVICE ("input_method")
An InputMethodManager for management of input methods.
UI_MODE_SERVICE ("uimode")
An UiModeManager for controlling UI modes.
DOWNLOAD_SERVICE ("download")
A DownloadManager for requesting HTTP downloads
BATTERY_SERVICE ("batterymanager")
A BatteryManager for managing battery state
JOB_SCHEDULER_SERVICE ("taskmanager")
A JobScheduler for managing scheduled tasks
NETWORK_STATS_SERVICE ("netstats")
A NetworkStatsManager for querying network usage statistics.
HARDWARE_PROPERTIES_SERVICE ("hardware_properties")
A HardwarePropertiesManager for accessing hardware properties.

注意:通过此API获取的系统服务可能与它们从中获取的上下文紧密相关。 一般来说,不要在各种不同的上下文(活动,应用程序,服务,提供者等)之间共享服务对象,

Parameters
name String: The name of the desired service.
Returns
Object The service or null if the name does not exist.

getSystemServiceName

Added in API level 23
String getSystemServiceName (Class<?> serviceClass)

获取由指定的类表示的系统级服务的名称。

Parameters
serviceClass Class: The class of the desired service.
Returns
String The service name or null if the class is not a supported system service.

getTheme

Added in API level 1
Resources.Theme getTheme ()

返回与此上下文关联的主题对象。

Returns
Resources.Theme

getWallpaper

Added in API level 1
Drawable getWallpaper ()

此方法在API级别23中已弃用。
改为使用WallpaperManager.get()

Returns
Drawable

getWallpaperDesiredMinimumHeight

Added in API level 1
int getWallpaperDesiredMinimumHeight ()

此方法在API级别23中已弃用。
改为使用WallpaperManager.getDesiredMinimumHeight()

Returns
int

getWallpaperDesiredMinimumWidth

Added in API level 1
int getWallpaperDesiredMinimumWidth ()

此方法在API级别23中已弃用。
改为使用WallpaperManager.getDesiredMinimumWidth()

Returns
int

grantUriPermission

Added in API level 1
void grantUriPermission (String toPackage, 
                Uri uri, 
                int modeFlags)

无论该软件包是否具有访问Uri内容提供者的一般权限,都可以授予访问另一个软件包的特定Uri的权限。 这可用于授予特定的临时权限,通常用于响应用户交互(例如用户打开您希望其他人显示的附件)。

通常你应该使用Intent.FLAG_GRANT_READ_URI_PERMISSIONIntent.FLAG_GRANT_WRITE_URI_PERMISSION ,Intent被用来直接启动一个活动而不是这个功能。 如果您直接使用此功能,则应该确保在不再允许目标访问目标时调用revokeUriPermission(Uri, int)

要成功,拥有Uri的内容提供商必须在其清单中设置 grantUriPermissions属性或包含 <grant-uri-permissions>标签。

Parameters
toPackage String: The package you would like to allow to access the Uri.
uri Uri: The Uri you would like to grant access to.
modeFlags int: The desired access modes. Any combination of Intent.FLAG_GRANT_READ_URI_PERMISSION, Intent.FLAG_GRANT_WRITE_URI_PERMISSION, Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION, or Intent.FLAG_GRANT_PREFIX_URI_PERMISSION.

isDeviceProtectedStorage

Added in API level 24
boolean isDeviceProtectedStorage ()

指示此Context的存储API是否受设备保护存储支持。

Returns
boolean

isRestricted

Added in API level 4
boolean isRestricted ()

指示此上下文是否受限制。

Returns
boolean true if this Context is restricted, false otherwise.

moveDatabaseFrom

Added in API level 24
boolean moveDatabaseFrom (Context sourceContext, 
                String name)

将现有数据库文件从给定的源存储上下文移动到此上下文。 这通常用于在升级后在存储位置之间迁移数据,例如迁移到设备保护存储。

数据库在移动之前必须关闭。

Parameters
sourceContext Context: The source context which contains the existing database to move.
name String: The name of the database file.
Returns
boolean true if the move was successful or if the database didn't exist in the source context, otherwise false.

moveSharedPreferencesFrom

Added in API level 24
boolean moveSharedPreferencesFrom (Context sourceContext, 
                String name)

将现有的共享首选项文件从给定的源存储上下文移至此上下文。 这通常用于升级后在存储位置之间迁移数据,例如迁移到设备保护存储。

Parameters
sourceContext Context: The source context which contains the existing shared preferences to move.
name String: The name of the shared preferences file.
Returns
boolean true if the move was successful or if the shared preferences didn't exist in the source context, otherwise false.

openFileInput

Added in API level 1
FileInputStream openFileInput (String name)

打开与此Context的应用程序包关联的私人文件以供阅读。

Parameters
name String: The name of the file to open; can not contain path separators.
Returns
FileInputStream The resulting FileInputStream.
Throws
FileNotFoundException

openFileOutput

Added in API level 1
FileOutputStream openFileOutput (String name, 
                int mode)

打开与此Context的应用程序包关联的私有文件以进行写入。 如果该文件不存在,则创建该文件。

调用应用程序无需额外的权限来读取或写入返回的文件。

Parameters
name String: The name of the file to open; can not contain path separators.
mode int: Operating mode. Use 0 or MODE_PRIVATE for the default operation. Use MODE_APPEND to append to an existing file.
Returns
FileOutputStream The resulting FileOutputStream.
Throws
FileNotFoundException

openOrCreateDatabase

Added in API level 11
SQLiteDatabase openOrCreateDatabase (String name, 
                int mode, 
                SQLiteDatabase.CursorFactory factory, 
                DatabaseErrorHandler errorHandler)

打开与此Context的应用程序包关联的新私有SQLiteDatabase。 如果数据库文件不存在,则创建该文件。

接受输入参数:当sqlite报告数据库损坏时,用于处理腐败的具体实例 DatabaseErrorHandler

Parameters
name String: The name (unique in the application package) of the database.
mode int: Operating mode. Use 0 or MODE_PRIVATE for the default operation. Use MODE_ENABLE_WRITE_AHEAD_LOGGING to enable write-ahead logging by default. Use MODE_NO_LOCALIZED_COLLATORS to disable localized collators.
factory SQLiteDatabase.CursorFactory: An optional factory class that is called to instantiate a cursor when query is called.
errorHandler DatabaseErrorHandler: the DatabaseErrorHandler to be used when sqlite reports database corruption. if null, DefaultDatabaseErrorHandler is assumed.
Returns
SQLiteDatabase The contents of a newly created database with the given name.

openOrCreateDatabase

Added in API level 1
SQLiteDatabase openOrCreateDatabase (String name, 
                int mode, 
                SQLiteDatabase.CursorFactory factory)

打开与此Context的应用程序包关联的新私有SQLiteDatabase。 如果数据库文件不存在,请创建它。

Parameters
name String: The name (unique in the application package) of the database.
mode int: Operating mode. Use 0 or MODE_PRIVATE for the default operation. Use MODE_ENABLE_WRITE_AHEAD_LOGGING to enable write-ahead logging by default. Use MODE_NO_LOCALIZED_COLLATORS to disable localized collators.
factory SQLiteDatabase.CursorFactory: An optional factory class that is called to instantiate a cursor when query is called.
Returns
SQLiteDatabase The contents of a newly created database with the given name.

peekWallpaper

Added in API level 1
Drawable peekWallpaper ()

此方法在API级别23中已弃用。
改为使用WallpaperManager.peek()

Returns
Drawable

registerReceiver

Added in API level 1
Intent registerReceiver (BroadcastReceiver receiver, 
                IntentFilter filter)

注册BroadcastReceiver以在主要活动线程中运行。 接收器将在主应用程序线程中与任何匹配过滤器的广播Intent一起调用。

系统可能会广播“粘性”的内容 - 在广播结束后,这些内容将保留下来,以便发送给任何以后的注册。 如果您的IntentFilter匹配这些粘意图之一,这一意图将这个函数返回时就好像刚刚被广播发送到您的接收器

可能有多个匹配过滤器的粘性内容,在这种情况下,每个内容都将被发送到接收方 在这种情况下,函数只能直接返回其中的一个; 哪些返回是由系统任意决定的。

如果您知道您注册的意图是粘性的,您可以为您的接收器提供空值。 在这种情况下,没有接收者注册 - 该函数只是返回匹配过滤器的粘性Intent。 在多个匹配的情况下,应用与上述相同的规则。

有关意向广播的更多信息,请参阅 BroadcastReceiver

ICE_CREAM_SANDWICH ,使用此方法注册的接收方将正确地遵守为广播的Intent指定的setPackage(String) 在此之前,它将被忽略并交付给所有匹配的注册接收者。 如果使用它来保证安全,请小心。

注意:此方法不能从BroadcastReceiver组件调用; 也就是从应用程序清单中声明的BroadcastReceiver。 然而,从另一个BroadcastReceiver调用此方法是可以的,因为这种已注册的BroadcastReceiver的生命周期与注册该对象的对象绑定在一起,而该方法本身已在运行时注册为registerReceiver(BroadcastReceiver, IntentFilter)

Parameters
receiver BroadcastReceiver: The BroadcastReceiver to handle the broadcast.
filter IntentFilter: Selects the Intent broadcasts to be received.
Returns
Intent The first sticky intent found that matches filter, or null if there are none.

registerReceiver

Added in API level 1
Intent registerReceiver (BroadcastReceiver receiver, 
                IntentFilter filter, 
                String broadcastPermission, 
                Handler scheduler)

注册以接收意图广播,以在调度程序的上下文中运行。 有关更多信息,请参阅registerReceiver(BroadcastReceiver, IntentFilter) 这使您可以强制谁可以向接收者广播意图,或使接收者在与主应用程序线程不同的线程中运行。

有关意向广播的更多信息,请参阅 BroadcastReceiver

ICE_CREAM_SANDWICH ,使用此方法注册的接收方将正确地遵守为正在广播的Intent指定的setPackage(String) 在此之前,它将被忽略并交付给所有匹配的注册接收者。 如果使用它来保证安全,请小心。

Parameters
receiver BroadcastReceiver: The BroadcastReceiver to handle the broadcast.
filter IntentFilter: Selects the Intent broadcasts to be received.
broadcastPermission String: String naming a permissions that a broadcaster must hold in order to send an Intent to you. If null, no permission is required.
scheduler Handler: Handler identifying the thread that will receive the Intent. If null, the main thread of the process will be used.
Returns
Intent The first sticky intent found that matches filter, or null if there are none.

removeStickyBroadcast

Added in API level 1
void removeStickyBroadcast (Intent intent)

此方法在API级别23中已弃用。
不应使用粘滞广播。 它们不提供安全性(任何人都可以访问它们),没有保护(任何人都可以修改它们)以及其他许多问题。 推荐的模式是使用非粘性广播来报告某些事情已经发生变化,另一种机制是应用程序在需要时检索当前值。

删除之前与 sendStickyBroadcast(Intent)发送的数据,这样就好像粘性广播从未发生过一样。

您必须拥有BROADCAST_STICKY权限才能使用此API。 如果您没有获得该权限,则会抛出SecurityException

Parameters
intent Intent: The Intent that was previously broadcast.

removeStickyBroadcastAsUser

Added in API level 17
void removeStickyBroadcastAsUser (Intent intent, 
                UserHandle user)

此方法在API级别23中已弃用。
不应使用粘滞广播。 它们不提供安全性(任何人都可以访问它们),没有保护(任何人都可以修改它们)以及其他许多问题。 推荐的模式是使用非粘性广播来报告某些事情已经发生变化,另一种机制是应用程序在需要时检索当前值。

版本removeStickyBroadcast(Intent) ,允许您指定广播将被发送到的用户。 这不适用于系统映像上未预安装的应用程序。 使用它需要保持INTERACT_ACROSS_USERS权限。

您必须拥有BROADCAST_STICKY权限才能使用此API。 如果您没有获得该权限,则会抛出SecurityException

Parameters
intent Intent: The Intent that was previously broadcast.
user UserHandle: UserHandle to remove the sticky broadcast from.

revokeUriPermission

Added in API level 1
void revokeUriPermission (Uri uri, 
                int modeFlags)

删除所有权限以访问之前与grantUriPermission(String, Uri, int)添加的特定内容提供商Uri。 给定的Uri将匹配所有先前授予的Uris,这些Uris与给定的Uri是相同的或者是子路径。 也就是说,撤销“content:// foo / target”将撤消“content:// foo / target”和“content:// foo / target / sub”,但不会取消“content:// foo”。 它不会删除存在于更高级别的任何前缀授权。

LOLLIPOP之前,如果您没有对Uri的常规权限访问权限,但通过特定的Uri权限授予获得了访问权限,则无法使用此功能撤消该授权,并且会抛出SecurityException LOLLIPOP ,这个函数不会抛出一个安全异常,但会删除Uri授予应用程序的任何权限(或者没有)。

Parameters
uri Uri: The Uri you would like to revoke access to.
modeFlags int: The desired access modes. Any combination of Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION.

sendBroadcast

Added in API level 1
void sendBroadcast (Intent intent, 
                String receiverPermission)

将给定的意图广播给所有感兴趣的BroadcastReceivers,允许强制执行可选的必需权限。 这个调用是异步的; 它会立即返回,并且您将在接收器运行时继续执行。 没有结果从接收器传播,接收器不能中止广播。 如果您想允许接收器传播结果或中止广播,则必须使用sendOrderedBroadcast(Intent, String)发送一个有序广播。

有关意向广播的更多信息,请参阅 BroadcastReceiver

Parameters
intent Intent: The Intent to broadcast; all receivers matching this Intent will receive the broadcast.
receiverPermission String: (optional) String naming a permission that a receiver must hold in order to receive your broadcast. If null, no permission is required.

sendBroadcast

Added in API level 1
void sendBroadcast (Intent intent)

将给定的意图广播给所有感兴趣的BroadcastReceivers。 这个调用是异步的; 它会立即返回,并且您将在接收器运行时继续执行。 没有结果从接收器传播,接收器不能中止广播。 如果您想允许接收者传播结果或中止广播,则必须使用sendOrderedBroadcast(Intent, String)发送有序广播。

有关意向广播的更多信息,请参阅 BroadcastReceiver

Parameters
intent Intent: The Intent to broadcast; all receivers matching this Intent will receive the broadcast.

sendBroadcastAsUser

Added in API level 17
void sendBroadcastAsUser (Intent intent, 
                UserHandle user)

版本sendBroadcast(Intent) ,它允许您指定广播将被发送到的用户。 这不适用于系统映像上未预安装的应用程序。 使用它需要保持INTERACT_ACROSS_USERS权限。

Parameters
intent Intent: The intent to broadcast
user UserHandle: UserHandle to send the intent to.

sendBroadcastAsUser

Added in API level 17
void sendBroadcastAsUser (Intent intent, 
                UserHandle user, 
                String receiverPermission)

版本sendBroadcast(Intent, String) ,允许您指定广播将发送到的用户。 这不适用于系统映像上未预安装的应用程序。 使用它需要保持INTERACT_ACROSS_USERS权限。

Parameters
intent Intent: The Intent to broadcast; all receivers matching this Intent will receive the broadcast.
user UserHandle: UserHandle to send the intent to.
receiverPermission String: (optional) String naming a permission that a receiver must hold in order to receive your broadcast. If null, no permission is required.

sendOrderedBroadcast

Added in API level 1
void sendOrderedBroadcast (Intent intent, 
                String receiverPermission, 
                BroadcastReceiver resultReceiver, 
                Handler scheduler, 
                int initialCode, 
                String initialData, 
                Bundle initialExtras)

版本sendBroadcast(Intent) ,允许您从广播中接收数据。 这是通过在呼叫时提供自己的BroadcastReceiver来完成的,它将在广播结束时被视为最终接收者 - 它的onReceive(Context, Intent)方法将被调用,并从其他接收者收集结果值。 广播将按照与调用sendOrderedBroadcast(Intent, String)相同的方式进行序列化。

sendBroadcast(Intent)一样,这种方法是异步的; 它会在调用resultReceiver.onReceive()之前返回。

有关意向广播的更多信息,请参阅 BroadcastReceiver

Parameters
intent Intent: The Intent to broadcast; all receivers matching this Intent will receive the broadcast.
receiverPermission String: String naming a permissions that a receiver must hold in order to receive your broadcast. If null, no permission is required.
resultReceiver BroadcastReceiver: Your own BroadcastReceiver to treat as the final receiver of the broadcast.
scheduler Handler: A custom Handler with which to schedule the resultReceiver callback; if null it will be scheduled in the Context's main thread.
initialCode int: An initial value for the result code. Often Activity.RESULT_OK.
initialData String: An initial value for the result data. Often null.
initialExtras Bundle: An initial value for the result extras. Often null.

sendOrderedBroadcast

Added in API level 1
void sendOrderedBroadcast (Intent intent, 
                String receiverPermission)

将给定的意图广播给所有感兴趣的BroadcastReceivers,一次发送一个,让更多的首选接收者在将广播发送给次优先接收者之前消费广播。 这个调用是异步的; 它会立即返回,并且您将在接收器运行时继续执行。

有关意向广播的更多信息,请参阅 BroadcastReceiver

Parameters
intent Intent: The Intent to broadcast; all receivers matching this Intent will receive the broadcast.
receiverPermission String: (optional) String naming a permissions that a receiver must hold in order to receive your broadcast. If null, no permission is required.

sendOrderedBroadcastAsUser

Added in API level 17
void sendOrderedBroadcastAsUser (Intent intent, 
                UserHandle user, 
                String receiverPermission, 
                BroadcastReceiver resultReceiver, 
                Handler scheduler, 
                int initialCode, 
                String initialData, 
                Bundle initialExtras)

版本sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle) ,允许您指定广播将被发送到的用户。 这不适用于系统映像上未预安装的应用程序。 使用它需要保持INTERACT_ACROSS_USERS权限。

有关意向广播的更多信息,请参阅 BroadcastReceiver

Parameters
intent Intent: The Intent to broadcast; all receivers matching this Intent will receive the broadcast.
user UserHandle: UserHandle to send the intent to.
receiverPermission String: String naming a permissions that a receiver must hold in order to receive your broadcast. If null, no permission is required.
resultReceiver BroadcastReceiver: Your own BroadcastReceiver to treat as the final receiver of the broadcast.
scheduler Handler: A custom Handler with which to schedule the resultReceiver callback; if null it will be scheduled in the Context's main thread.
initialCode int: An initial value for the result code. Often Activity.RESULT_OK.
initialData String: An initial value for the result data. Often null.
initialExtras Bundle: An initial value for the result extras. Often null.

sendStickyBroadcast

Added in API level 1
void sendStickyBroadcast (Intent intent)

此方法在API级别23中已弃用。
不应使用粘滞广播。 它们不提供安全性(任何人都可以访问它们),没有保护(任何人都可以修改它们)以及其他许多问题。 推荐的模式是使用非粘性广播来报告某些事情已经发生变化,另一种机制是应用程序在需要时检索当前值。

执行“粘滞”的sendBroadcast(Intent) ,这意味着您要发送的意图在广播完成后仍保留,以便其他人可以通过返回值registerReceiver(BroadcastReceiver, IntentFilter)快速检索该数据。 在所有其他方面,这与sendBroadcast(Intent)行为相同。

您必须拥有BROADCAST_STICKY权限才能使用此API。 如果你没有这个权限, SecurityException会被抛出。

Parameters
intent Intent: The Intent to broadcast; all receivers matching this Intent will receive the broadcast, and the Intent will be held to be re-broadcast to future receivers.

sendStickyBroadcastAsUser

Added in API level 17
void sendStickyBroadcastAsUser (Intent intent, 
                UserHandle user)

此方法在API级别23中已弃用。
不应使用粘滞广播。 它们不提供安全性(任何人都可以访问它们),没有保护(任何人都可以修改它们)以及其他许多问题。 推荐的模式是使用非粘性广播来报告某些事情已经发生变化,另一种机制是应用程序在需要时检索当前值。

版本sendStickyBroadcast(Intent) ,允许您指定广播将发送到的用户。 这不适用于系统映像上未预安装的应用程序。 使用它需要保持INTERACT_ACROSS_USERS权限。

Parameters
intent Intent: The Intent to broadcast; all receivers matching this Intent will receive the broadcast, and the Intent will be held to be re-broadcast to future receivers.
user UserHandle: UserHandle to send the intent to.

sendStickyOrderedBroadcast

Added in API level 5
void sendStickyOrderedBroadcast (Intent intent, 
                BroadcastReceiver resultReceiver, 
                Handler scheduler, 
                int initialCode, 
                String initialData, 
                Bundle initialExtras)

此方法在API级别23中已弃用。
不应使用粘滞广播。 它们不提供安全性(任何人都可以访问它们),没有保护(任何人都可以修改它们)以及其他许多问题。 推荐的模式是使用非粘性广播来报告某些事情已经发生变化,另一种机制是应用程序在需要时检索当前值。

版本为sendStickyBroadcast(Intent) ,允许您从广播接收数据。 这是通过在呼叫时提供您自己的BroadcastReceiver来实现的,这将在广播结束时作为最终接收方来处理 - 将使用从其他接收方收集的结果值调用其onReceive(Context, Intent)方法。 广播将按照与调用sendOrderedBroadcast(Intent, String)相同的方式进行序列化。

sendBroadcast(Intent)一样,这种方法是异步的; 它会在调用resultReceiver.onReceive()之前返回。 请注意,存储的粘性数据只是您最初提供给广播的数据,而不是接收机所做的任何更改。

有关意向广播的更多信息,请参阅 BroadcastReceiver

Parameters
intent Intent: The Intent to broadcast; all receivers matching this Intent will receive the broadcast.
resultReceiver BroadcastReceiver: Your own BroadcastReceiver to treat as the final receiver of the broadcast.
scheduler Handler: A custom Handler with which to schedule the resultReceiver callback; if null it will be scheduled in the Context's main thread.
initialCode int: An initial value for the result code. Often Activity.RESULT_OK.
initialData String: An initial value for the result data. Often null.
initialExtras Bundle: An initial value for the result extras. Often null.

sendStickyOrderedBroadcastAsUser

Added in API level 17
void sendStickyOrderedBroadcastAsUser (Intent intent, 
                UserHandle user, 
                BroadcastReceiver resultReceiver, 
                Handler scheduler, 
                int initialCode, 
                String initialData, 
                Bundle initialExtras)

此方法在API级别23中已弃用。
不应使用粘滞广播。 它们不提供安全性(任何人都可以访问它们),没有保护(任何人都可以修改它们)以及其他许多问题。 推荐的模式是使用非粘性广播来报告某些事情已经发生变化,另一种机制是应用程序在需要时检索当前值。

版本sendStickyOrderedBroadcast(Intent, BroadcastReceiver, Handler, int, String, Bundle) ,允许您指定广播将发送到的用户。 这不适用于系统映像上未预安装的应用程序。 使用它需要保持INTERACT_ACROSS_USERS权限。

有关意向广播的更多信息,请参阅 BroadcastReceiver

Parameters
intent Intent: The Intent to broadcast; all receivers matching this Intent will receive the broadcast.
user UserHandle: UserHandle to send the intent to.
resultReceiver BroadcastReceiver: Your own BroadcastReceiver to treat as the final receiver of the broadcast.
scheduler Handler: A custom Handler with which to schedule the resultReceiver callback; if null it will be scheduled in the Context's main thread.
initialCode int: An initial value for the result code. Often Activity.RESULT_OK.
initialData String: An initial value for the result data. Often null.
initialExtras Bundle: An initial value for the result extras. Often null.

setTheme

Added in API level 1
void setTheme (int resid)

为此上下文设置基本主题。 请注意,应在上下文中实例化任何视图之前调用setContentView(View) (例如,在调用setContentView(View)inflate(int, ViewGroup)之前)。

Parameters
resid int: The style resource describing the theme.

setWallpaper

Added in API level 1
void setWallpaper (Bitmap bitmap)

此方法在API级别23中已弃用。
改为使用WallpaperManager.set()

此方法要求调用方拥有权限 SET_WALLPAPER

Parameters
bitmap Bitmap
Throws
IOException

setWallpaper

Added in API level 1
void setWallpaper (InputStream data)

此方法在API级别23中已弃用。
改为使用WallpaperManager.set()

此方法要求调用方拥有权限 SET_WALLPAPER

Parameters
data InputStream
Throws
IOException

startActivities

Added in API level 16
void startActivities (Intent[] intents, 
                Bundle options)

启动多项新活动。 这通常与针对数组中的第一个Intent调用startActivity(Intent)相同,在其创建期间针对第二个条目调用startActivity(Intent)该活动等。注意,与该方法不同,通常不会创建除数组中的最后一个活动在这一点上,而是会在用户第一次访问它们时创建(由于顶部的活动被压回)。

如果没有找到任何给定Intent的活动,则此方法将引发ActivityNotFoundException 在这种情况下,活动堆栈的状态是未定义的(列表中的一些Intents可能在其上,有些则不),所以您可能想要避免这种情况。

Parameters
intents Intent: An array of Intents to be started.
options Bundle: Additional options for how the Activity should be started. See Context.startActivity(Intent, Bundle) for more details.

startActivities

Added in API level 11
void startActivities (Intent[] intents)

与没有指定选项的 startActivities(Intent[], Bundle)相同。

Parameters
intents Intent: An array of Intents to be started.

startActivity

Added in API level 1
void startActivity (Intent intent)

与没有指定选项的 startActivity(Intent, Bundle)相同。

Parameters
intent Intent: The description of the activity to start.

startActivity

Added in API level 16
void startActivity (Intent intent, 
                Bundle options)

启动一项新活动。 您不会收到有关活动何时退出的任何信息。

请注意,如果从Activity上下文之外调用此方法,则意图必须包含FLAG_ACTIVITY_NEW_TASK启动标志。 这是因为,如果没有从现有的活动启动,就没有现有的任务来放置新的活动,因此需要将其放置在它自己的单独任务中。

如果没有找到运行给定Intent的活动,则此方法将引发 ActivityNotFoundException

Parameters
intent Intent: The description of the activity to start.
options Bundle: Additional options for how the Activity should be started. May be null if there are no options. See ActivityOptions for how to build the Bundle supplied here; there are no supported definitions for building it manually.

startInstrumentation

Added in API level 1
boolean startInstrumentation (ComponentName className, 
                String profileFile, 
                Bundle arguments)

开始执行Instrumentation课程。 给定的Instrumentation组件将通过杀死其目标应用程序(如果当前正在运行),启动目标进程,实例化Instrumentation组件,然后让它驱动应用程序来运行。

该功能不是同步的 - 只要仪器启动并且正在运行,它就会返回。

通常只允许针对未签名或使用签名进行签名的软件包运行测试,该签名中还会签署该测试软件包(确保目标相信该测试)。

Parameters
className ComponentName: Name of the Instrumentation component to be run.
profileFile String: Optional path to write profiling data as the instrumentation runs, or null for no profiling.
arguments Bundle: Additional optional arguments to pass to the instrumentation, or null.
Returns
boolean true if the instrumentation was successfully started, else false if it could not be found.

startIntentSender

Added in API level 5
void startIntentSender (IntentSender intent, 
                Intent fillInIntent, 
                int flagsMask, 
                int flagsValues, 
                int extraFlags)

与没有指定选项的 startIntentSender(IntentSender, Intent, int, int, int, Bundle)相同。

Parameters
intent IntentSender: The IntentSender to launch.
fillInIntent Intent: If non-null, this will be provided as the intent parameter to sendIntent(Context, int, Intent, IntentSender.OnFinished, Handler).
flagsMask int: Intent flags in the original IntentSender that you would like to change.
flagsValues int: Desired values for any bits set in flagsMask
extraFlags int: Always set to 0.
Throws
IntentSender.SendIntentException

startIntentSender

Added in API level 16
void startIntentSender (IntentSender intent, 
                Intent fillInIntent, 
                int flagsMask, 
                int flagsValues, 
                int extraFlags, 
                Bundle options)

startActivity(Intent, Bundle)一样,但需要启动一个IntentSender。 如果IntentSender用于某个活动,那么该活动将开始,就像您在此调用常规startActivity(Intent) ; 否则,其相关的动作将被执行(例如发送广播),就好像你已经调用了IntentSender.sendIntent一样。

Parameters
intent IntentSender: The IntentSender to launch.
fillInIntent Intent: If non-null, this will be provided as the intent parameter to sendIntent(Context, int, Intent, IntentSender.OnFinished, Handler).
flagsMask int: Intent flags in the original IntentSender that you would like to change.
flagsValues int: Desired values for any bits set in flagsMask
extraFlags int: Always set to 0.
options Bundle: Additional options for how the Activity should be started. See Context.startActivity(Intent, Bundle) for more details. If options have also been supplied by the IntentSender, options given here will override any that conflict with those given by the IntentSender.
Throws
IntentSender.SendIntentException

startService

Added in API level 1
ComponentName startService (Intent service)

请求启动给定的应用程序服务。 Intent应该包含要启动的特定服务实现的完整类名称或要包含的特定包名称。 如果未指定Intent,则会记录有关此信息的警告,以及它找到并使用的多个匹配服务中的哪一个将是未定义的。 如果此服务尚未运行,它将被实例化并启动(如果需要,将为其创建一个进程); 如果它正在运行,那么它仍然在运行。

每次调用此方法都会导致对目标服务的onStartCommand(Intent, int, int)方法的相应调用,其意图在此给出。 这提供了一种便捷的方式将作业提交给服务,而无需绑定并调用其接口。

使用startService()会覆盖由bindService(Intent, ServiceConnection, int)管理的默认服务生命周期:它要求服务保持运行状态,直到stopService(Intent)被调用,而不管客户端是否连接到该服务。 请注意,对startService()的调用不是嵌套:无论您调用startService()多少次,对stopService(Intent)的单个调用都会使其停止。

系统尽可能地尝试保持运行服务。 他们应该停止的唯一时间是当前的前台应用程序正在使用如此多的资源以致服务需要被终止。 如果服务进程中发生任何错误,它将自动重新启动。

如果您没有启动给定服务的权限,则此函数将抛出 SecurityException

注意:每次调用startService()都会导致系统完成重要工作,以管理意图处理周围的服务生命周期,这可能需要几毫秒的CPU时间。 由于这一成本,startService()不应该用于频繁的意图传递到服务,并且仅用于安排重要的工作。 使用bound services进行高频呼叫。

Parameters
service Intent: Identifies the service to be started. The Intent must be either fully explicit (supplying a component name) or specify a specific package name it is targetted to. Additional values may be included in the Intent extras to supply arguments along with this specific start call.
Returns
ComponentName If the service is being started or is already running, the ComponentName of the actual service that was started is returned; else if the service does not exist null is returned.

stopService

Added in API level 1
boolean stopService (Intent name)

请求停止给定的应用程序服务。 如果服务未运行,则不会发生任何事情。 否则它会停止。 请注意,对startService()的调用不计入 - 无论启动多少次,都会停止服务。

请注意,如果停止服务仍然有ServiceConnection绑定到它与对象BIND_AUTO_CREATE集,它不会被破坏,直到所有这些绑定被删除。 有关服务生命周期的更多详细信息,请参阅Service文档。

如果您没有权限停止给定的服务,此功能将抛出 SecurityException

Parameters
name Intent: Description of the service to be stopped. The Intent must be either fully explicit (supplying a component name) or specify a specific package name it is targetted to.
Returns
boolean If there is a service matching the given Intent that is already running, then it is stopped and true is returned; else false is returned.

unbindService

Added in API level 1
void unbindService (ServiceConnection conn)

断开应用程序服务。 随着服务重新启动,您将不再接收呼叫,现在可以随时停止服务。

Parameters
conn ServiceConnection: The connection interface previously supplied to bindService(). This parameter must not be null.

unregisterReceiver

Added in API level 1
void unregisterReceiver (BroadcastReceiver receiver)

取消注册以前注册的BroadcastReceiver。 所有为此BroadcastReceiver注册的过滤器都将被删除。

Parameters
receiver BroadcastReceiver: The BroadcastReceiver to unregister.

Protected methods

attachBaseContext

Added in API level 1
void attachBaseContext (Context base)

为此ContextWrapper设置基本上下文。 所有的调用都会被委托给基础上下文。 如果已经设置了基本上下文,则引发IllegalStateException。

Parameters
base Context: The new base context for this wrapper.

Hooray!