public class ContextWrapper
extends Context
java.lang.Object | ||
↳ | android.content.Context | |
↳ | android.content.ContextWrapper |
Known Direct Subclasses |
Known Indirect Subclasses |
代理执行Context,将其所有调用简单地委托给另一个Context。 可以被分类为修改行为而不更改原始上下文。
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中已弃用。请改为使用 此方法要求调用方拥有权限 |
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的调用过程都没有被授予特定的权限,则抛出 |
void |
enforceCallingOrSelfUriPermission(Uri uri, int modeFlags, String message) 如果IPC 或您的调用进程没有被授予访问特定URI的权限,则抛出 |
void |
enforceCallingPermission(String permission, String message) 如果您正在处理的IPC的调用过程尚未获得特定权限,请抛出 |
void |
enforceCallingUriPermission(Uri uri, int modeFlags, String message) 如果调用进程和用户标识没有被授予访问特定URI的权限,则抛出 |
void |
enforcePermission(String permission, int pid, int uid, String message) 如果在系统中运行的特定进程和用户标识不允许给定权限,则抛出 |
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的权限,则抛出 |
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) 返回存储使用 |
File |
getDir(String name, int mode) 根据需要检索,创建应用程序可以放置自己的自定义数据文件的新目录。 |
File |
getExternalCacheDir() 返回应用程序可以放置其拥有的缓存文件的主共享/外部存储设备上特定于应用程序的目录的绝对路径。 |
File[] |
getExternalCacheDirs() 返回应用程序可以放置它拥有的缓存文件的所有共享/外部存储设备上特定于应用程序的目录的绝对路径。 |
File |
getExternalFilesDir(String type) 返回应用程序可以放置其拥有的持久性文件的主共享/外部存储设备上目录的绝对路径。 |
File[] |
getExternalFilesDirs(String type) 返回应用程序可以放置其拥有的持久性文件的所有共享/外部存储设备上特定于应用程序的目录的绝对路径。 |
File[] |
getExternalMediaDirs() 返回应用程序可放置媒体文件的所有共享/外部存储设备上特定于应用程序的目录的绝对路径。 |
File |
getFileStreamPath(String name) 返回存储使用 |
File |
getFilesDir() 返回存储使用 |
Looper |
getMainLooper() 返回当前进程主线程的Looper。 |
File |
getNoBackupFilesDir() 返回类似于 |
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中已弃用。请改为使用 |
int |
getWallpaperDesiredMinimumHeight() 此方法在API级别23中已弃用。请改为使用 |
int |
getWallpaperDesiredMinimumWidth() 此方法在API级别23中已弃用。请改为使用 |
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中已弃用。请改用 |
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) 删除所有权限以访问之前添加了 |
void |
sendBroadcast(Intent intent, String receiverPermission) 将给定的意图广播给所有感兴趣的BroadcastReceivers,允许强制执行可选的必需权限。 |
void |
sendBroadcast(Intent intent) 将给定的意图广播给所有感兴趣的BroadcastReceivers。 |
void |
sendBroadcastAsUser(Intent intent, UserHandle user) 版本 |
void |
sendBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission) 版本 |
void |
sendOrderedBroadcast(Intent intent, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras) 版本为 |
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) 版本 |
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中已弃用。请改为使用 此方法要求调用方拥有权限 |
void |
setWallpaper(InputStream data) 此方法在API级别23中已弃用。请改为使用 此方法要求调用方拥有权限 |
void |
startActivities(Intent[] intents, Bundle options) 启动多项新活动。 |
void |
startActivities(Intent[] intents) 与没有指定选项的 |
void |
startActivity(Intent intent) 与没有指定选项的 |
void |
startActivity(Intent intent, Bundle options) 启动一项新活动。 |
boolean |
startInstrumentation(ComponentName className, String profileFile, Bundle arguments) 开始执行 |
void |
startIntentSender(IntentSender intent, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags) 与没有指定选项的 |
void |
startIntentSender(IntentSender intent, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, Bundle options) 像 |
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
|
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
void clearWallpaper ()
此方法在API级别23中已弃用。
改为使用WallpaperManager.clear()
。
此方法要求主叫方拥有权限 SET_WALLPAPER
。
Throws | |
---|---|
IOException |
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. |
Context createDeviceProtectedStorageContext ()
为当前上下文返回一个新的Context对象,但其存储API由受设备保护的存储支持。
在直接引导的设备上,存储在此位置的数据使用绑定到物理设备的密钥进行加密,并且可以在设备成功引导后立即访问,无论是 在用户使用凭据进行身份验证 之前还是之后 (例如锁定模式或PIN)。
由于受到设备保护的数据在没有用户身份验证的情况下可用,因此应谨慎限制使用此上下文存储的数据。 例如,强烈建议不要在设备保护区域中存储敏感身份验证令牌或密码。
如果底层设备无法使用不同的密钥存储受设备保护和凭据保护的数据,则两个存储区域将同时可用。 它们仍然是磁盘上两个不同的存储位置,只有可用性窗口发生变化。
每次调用此方法都会返回一个Context对象的新实例; 上下文对象不共享,但是常见的状态(ClassLoader,用于相同配置的其他资源)可能是这样的,上下文本身可以是相当轻量级的。
Returns | |
---|---|
Context |
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. |
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 |
String[] databaseList ()
返回一个字符串数组,命名与此Context的应用程序包关联的专用数据库。
Returns | |
---|---|
String[] |
Array of strings naming the private databases. |
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 . |
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 . |
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 . |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
String[] fileList ()
返回一个字符串数组,命名与此Context的应用程序包关联的私有文件。
Returns | |
---|---|
String[] |
Array of strings naming the private files. |
Context getApplicationContext ()
返回当前进程的单个全局应用程序对象的上下文。 这通常只应用于需要生命周期与当前上下文分离的Context,该生命周期与进程的生命周期相关,而不是当前组件。
考虑如何与 registerReceiver(BroadcastReceiver, IntentFilter)
交互:
如果从Activity上下文中使用,接收者正在该活动中注册。 这意味着您需要在活动完成之前取消注册; 事实上,如果你不这样做,框架会清除你的泄漏注册,因为它会删除活动并记录错误。 因此,如果使用Activity上下文来注册一个静态的接收者(对进程是全局的,而不是与一个Activity实例关联的),那么在你使用的活动被销毁的任何点上,你的注册将被删除。
如果从此处返回的Context使用,则接收者正在注册与您的应用程序关联的全局状态。 因此它永远不会被注销。 如果接收器与静态数据相关联,而不是特定组件,则这是必要的。 但是,如果您忘记取消注册,取消绑定等操作,则在别处使用ApplicationContext可能会导致严重泄漏。
Returns | |
---|---|
Context |
ApplicationInfo getApplicationInfo ()
返回此上下文包的完整应用程序信息。
Returns | |
---|---|
ApplicationInfo |
AssetManager getAssets ()
返回应用程序包的AssetManager实例。
注意:此方法的实现应该返回一个AssetManager实例,该实例与由getResources()
返回的Resources实例一致。 例如,他们应该共享相同的Configuration
对象。
Returns | |
---|---|
AssetManager |
an AssetManager instance for the application's package |
Context getBaseContext ()
Returns | |
---|---|
Context |
the base context as set by the constructor or setBaseContext |
File getCacheDir ()
返回文件系统上特定于应用程序的缓存目录的绝对路径。 这些文件将在设备存储空间不足时被首先删除。 这些文件将被删除时无法保证。
注意:您不应该依赖系统为您删除这些文件; 对于缓存文件占用的空间量,您应始终拥有合理的最大值(例如1 MB),并在超过该空间时修剪这些文件。
如果调用应用程序移动到采用的存储设备,则返回的路径可能会随时间而改变,因此只应保留相对路径。
应用程序不需要额外的权限来读取或写入返回的路径,因为此路径位于其私有存储中。
Returns | |
---|---|
File |
The path of the directory holding application cache files. |
ClassLoader getClassLoader ()
返回一个你可以用来检索这个包中的类的类加载器。
Returns | |
---|---|
ClassLoader |
File getCodeCacheDir ()
返回专用于存储缓存代码的文件系统上特定于应用程序的缓存目录的绝对路径。 无论何时升级您的特定应用程序以及升级整个平台时,系统都会删除存储在此位置的所有文件。
此位置适用于存储由应用程序在运行时生成的编译或优化的代码。
如果调用应用程序移动到采用的存储设备,则返回的路径可能会随时间而改变,因此只应保留相对路径。
应用程序不需要额外的权限来读取或写入返回的路径,因为此路径位于其私有存储中。
Returns | |
---|---|
File |
The path of the directory holding application code cache files. |
ContentResolver getContentResolver ()
为你的应用程序包返回一个ContentResolver实例。
Returns | |
---|---|
ContentResolver |
File getDataDir ()
返回存储属于此应用程序的所有私人文件的文件系统上目录的绝对路径。 应用程序不应该直接使用此路径; 他们应该使用getFilesDir()
, getCacheDir()
, getDir(String, int)
这个类,或者其他存储API。
如果调用应用程序移动到采用的存储设备,则返回的路径可能会随时间而改变,因此只应保留相对路径。
调用应用程序无需额外的权限即可读取或写入返回路径下的文件。
Returns | |
---|---|
File |
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. |
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. |
File getExternalCacheDir ()
返回应用程序可以放置其拥有的缓存文件的主共享/外部存储设备上特定于应用程序的目录的绝对路径。 这些文件是应用程序的内部文件,并且通常不会作为媒体显示给用户。
这就像 getCacheDir()
,这些文件在卸载应用程序时将被删除,但是有一些重要的区别:
JELLY_BEAN_MR1
or later and isExternalStorageEmulated(File)
returns true. getExternalStorageState(File)
. 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. |
File[] getExternalCacheDirs ()
返回应用程序可以放置它拥有的缓存文件的所有共享/外部存储设备上特定于应用程序的目录的绝对路径。 这些文件是应用程序的内部文件,并且通常不会作为媒体显示给用户。
这类似于 getCacheDir()
,因为这些文件在卸载应用程序时将被删除,但有一些重要的区别:
JELLY_BEAN_MR1
or later and isExternalStorageEmulated(File)
returns true. getExternalStorageState(File)
. 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() . |
File getExternalFilesDir (String type)
返回应用程序可以放置其拥有的持久性文件的主共享/外部存储设备上目录的绝对路径。 这些文件是应用程序的内部文件,对于用户而言通常不可见为媒体。
这类似于 getFilesDir()
,因为这些文件在卸载应用程序时将被删除,但是存在一些重要区别:
getExternalStorageState(File)
. 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. |
File[] getExternalFilesDirs (String type)
返回应用程序可以放置其拥有的持久性文件的所有共享/外部存储设备上特定于应用程序的目录的绝对路径。 这些文件是应用程序的内部文件,并且通常不会作为媒体显示给用户。
这就像 getFilesDir()
,这些文件将在应用程序卸载时被删除,但是有一些重要的区别:
getExternalStorageState(File)
. 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) . |
File[] getExternalMediaDirs ()
返回应用程序可放置媒体文件的所有共享/外部存储设备上特定于应用程序的目录的绝对路径。 通过MediaStore
扫描这些文件并将其提供给其他应用程序。
这类似于 getExternalFilesDirs(String)
,因为这些文件在卸载应用程序时将被删除,但有一些重要的区别:
getExternalStorageState(File)
. 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. |
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. |
File getFilesDir ()
返回存储使用 openFileOutput(String, int)
创建的文件的文件系统上目录的绝对路径。
如果调用应用程序移动到采用的存储设备,则返回的路径可能会随时间而改变,因此只应保留相对路径。
调用应用程序无需额外的权限即可读取或写入返回路径下的文件。
Returns | |
---|---|
File |
The path of the directory holding application files. |
Looper getMainLooper ()
返回当前进程主线程的Looper。 这是用于调用应用程序组件(活动,服务等)的线程。
根据定义,此方法返回与调用 Looper.getMainLooper()
所获得的结果相同的结果。
Returns | |
---|---|
Looper |
The main looper. |
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. |
File getObbDir ()
返回此应用程序的OBB文件(如果有)的主要共享/外部存储目录。 请注意,如果应用程序没有任何OBB文件,则该目录可能不存在。
这类似于 getFilesDir()
,因为这些文件在卸载应用程序时将被删除,但是存在一些重要区别:
getExternalStorageState(File)
. 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. |
File[] getObbDirs ()
返回应用程序的OBB文件(如果有)的所有共享/外部存储设备上的应用程序特定目录的绝对路径。 请注意,如果应用程序没有任何OBB文件,这些目录可能不存在。
这就像 getFilesDir()
一样,这些文件将在应用程序卸载时被删除,但是有一些重要的区别:
getExternalStorageState(File)
. 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() |
String getPackageCodePath ()
返回此上下文的主要Android包的完整路径。 Android包是一个ZIP文件,其中包含应用程序的主要代码和资产。
注意:这对于应用程序通常不是很有用,因为它们不应该直接访问文件系统。
Returns | |
---|---|
String |
String Path to the code and assets. |
PackageManager getPackageManager ()
返回PackageManager实例以查找全局包信息。
Returns | |
---|---|
PackageManager |
String getPackageResourcePath ()
返回此上下文的主要Android包的完整路径。 Android包是一个包含应用程序主要资源的ZIP文件。
注意:这对于应用程序通常不是很有用,因为它们不应该直接访问文件系统。
Returns | |
---|---|
String |
String Path to the resources. |
Resources getResources ()
返回应用程序包的资源实例。
注意:此方法的实现应该返回一个与由getAssets()
返回的AssetManager实例一致的资源实例。 例如,他们应该共享相同的Configuration
对象。
Returns | |
---|---|
Resources |
a Resources instance for the application's package |
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. |
Object getSystemService (String name)
按名称将句柄返回到系统级服务。 返回的对象的类因所请求的名称而异。 目前可用的名称是:
WINDOW_SERVICE
("window")
WindowManager
.
LAYOUT_INFLATER_SERVICE
("layout_inflater")
LayoutInflater
for inflating layout resources in this context.
ACTIVITY_SERVICE
("activity")
ActivityManager
for interacting with the global activity state of the system.
POWER_SERVICE
("power")
PowerManager
for controlling power management.
ALARM_SERVICE
("alarm")
AlarmManager
for receiving intents at the time of your choosing.
NOTIFICATION_SERVICE
("notification")
NotificationManager
for informing the user of background events.
KEYGUARD_SERVICE
("keyguard")
KeyguardManager
for controlling keyguard.
LOCATION_SERVICE
("location")
LocationManager
for controlling location (e.g., GPS) updates.
SEARCH_SERVICE
("search")
SearchManager
for handling search.
VIBRATOR_SERVICE
("vibrator")
Vibrator
for interacting with the vibrator hardware.
CONNECTIVITY_SERVICE
("connection")
ConnectivityManager
for handling management of network connections.
WIFI_SERVICE
("wifi")
WifiManager
for management of Wi-Fi connectivity.
WIFI_P2P_SERVICE
("wifip2p")
WifiP2pManager
for management of Wi-Fi Direct connectivity.
INPUT_METHOD_SERVICE
("input_method")
InputMethodManager
for management of input methods.
UI_MODE_SERVICE
("uimode")
UiModeManager
for controlling UI modes.
DOWNLOAD_SERVICE
("download")
DownloadManager
for requesting HTTP downloads
BATTERY_SERVICE
("batterymanager")
BatteryManager
for managing battery state
JOB_SCHEDULER_SERVICE
("taskmanager")
JobScheduler
for managing scheduled tasks
NETWORK_STATS_SERVICE
("netstats")
NetworkStatsManager
for querying network usage statistics.
HARDWARE_PROPERTIES_SERVICE
("hardware_properties")
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. |
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. |
Drawable getWallpaper ()
此方法在API级别23中已弃用。
改为使用WallpaperManager.get()
。
Returns | |
---|---|
Drawable |
int getWallpaperDesiredMinimumHeight ()
此方法在API级别23中已弃用。
改为使用WallpaperManager.getDesiredMinimumHeight()
。
Returns | |
---|---|
int |
int getWallpaperDesiredMinimumWidth ()
此方法在API级别23中已弃用。
改为使用WallpaperManager.getDesiredMinimumWidth()
。
Returns | |
---|---|
int |
void grantUriPermission (String toPackage, Uri uri, int modeFlags)
无论该软件包是否具有访问Uri内容提供者的一般权限,都可以授予访问另一个软件包的特定Uri的权限。 这可用于授予特定的临时权限,通常用于响应用户交互(例如用户打开您希望其他人显示的附件)。
通常你应该使用Intent.FLAG_GRANT_READ_URI_PERMISSION
或Intent.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 . |
boolean isDeviceProtectedStorage ()
指示此Context的存储API是否受设备保护存储支持。
Returns | |
---|---|
boolean |
boolean isRestricted ()
指示此上下文是否受限制。
Returns | |
---|---|
boolean |
true if this Context is restricted, false otherwise. |
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 . |
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 . |
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 |
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 |
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. |
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. |
Drawable peekWallpaper ()
此方法在API级别23中已弃用。
改为使用WallpaperManager.peek()
。
Returns | |
---|---|
Drawable |
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. |
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. |
void removeStickyBroadcast (Intent intent)
此方法在API级别23中已弃用。
不应使用粘滞广播。 它们不提供安全性(任何人都可以访问它们),没有保护(任何人都可以修改它们)以及其他许多问题。 推荐的模式是使用非粘性广播来报告某些事情已经发生变化,另一种机制是应用程序在需要时检索当前值。
删除之前与 sendStickyBroadcast(Intent)
发送的数据,这样就好像粘性广播从未发生过一样。
您必须拥有BROADCAST_STICKY
权限才能使用此API。 如果您没有获得该权限,则会抛出SecurityException
。
Parameters | |
---|---|
intent |
Intent : The Intent that was previously broadcast. |
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. |
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 . |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
void setTheme (int resid)
为此上下文设置基本主题。 请注意,应在上下文中实例化任何视图之前调用setContentView(View)
(例如,在调用setContentView(View)
或inflate(int, ViewGroup)
之前)。
Parameters | |
---|---|
resid |
int : The style resource describing the theme. |
void setWallpaper (Bitmap bitmap)
此方法在API级别23中已弃用。
改为使用WallpaperManager.set()
。
此方法要求调用方拥有权限 SET_WALLPAPER
。
Parameters | |
---|---|
bitmap |
Bitmap
|
Throws | |
---|---|
IOException |
void setWallpaper (InputStream data)
此方法在API级别23中已弃用。
改为使用WallpaperManager.set()
。
此方法要求调用方拥有权限 SET_WALLPAPER
。
Parameters | |
---|---|
data |
InputStream
|
Throws | |
---|---|
IOException |
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. |
void startActivities (Intent[] intents)
与没有指定选项的 startActivities(Intent[], Bundle)
相同。
Parameters | |
---|---|
intents |
Intent : An array of Intents to be started. |
void startActivity (Intent intent)
与没有指定选项的 startActivity(Intent, Bundle)
相同。
Parameters | |
---|---|
intent |
Intent : The description of the activity to start. |
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. |
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. |
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 |
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 |
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. |
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. |
void unbindService (ServiceConnection conn)
断开应用程序服务。 随着服务重新启动,您将不再接收呼叫,现在可以随时停止服务。
Parameters | |
---|---|
conn |
ServiceConnection : The connection interface previously supplied to bindService(). This parameter must not be null. |
void unregisterReceiver (BroadcastReceiver receiver)
取消注册以前注册的BroadcastReceiver。 所有为此BroadcastReceiver注册的过滤器都将被删除。
Parameters | |
---|---|
receiver |
BroadcastReceiver : The BroadcastReceiver to unregister. |
void attachBaseContext (Context base)
为此ContextWrapper设置基本上下文。 所有的调用都会被委托给基础上下文。 如果已经设置了基本上下文,则引发IllegalStateException。
Parameters | |
---|---|
base |
Context : The new base context for this wrapper. |