安卓22开发文档翻译:环境,Environment
extends
Object
提供了用来访问环境变量的手段。
自此版本开始引入 应用编程接口级别8
标准目录 ,其中放置的是,应当显示 在闹钟铃声列表( 不是常规的音乐 )中供用户选择的那些声音文件。 可与 DIRECTORY_MUSIC 、 DIRECTORY_PODCASTS 、 DIRECTORY_NOTIFICATIONS 和 DIRECTORY_RINGTONES 组合使用 ,以将某个声音文件标记为多种类型。
自此版本开始引入 应用编程接口级别8
在将此设备挂载为相机时,用来放置照片和视频的传统位置。注意,这只是按照惯例设置的一个顶级公有目录,这个惯例在其它情况下没有什么意义。
自此版本开始引入 应用编程接口级别8
用来放置用户下载的文件的标准目录。注意,这只是按照惯例设置的一个顶级公有目录,妳完全可以将文件下载到妳自己私有目录中的某处。另外还要注意,尽管此处的常量值名为DIRECTORY_DOWNLOADS (复数形式),但是,出于后向兼容方面的考虑,实际的文件名并非是复数的。
自此版本开始引入 应用编程接口级别8
标准目录 ,其中放置的是,应当出现在用户的常规音乐列表中的声音文件。 可与 DIRECTORY_PODCASTS 、 DIRECTORY_NOTIFICATIONS 、 DIRECTORY_ALARMS 和 DIRECTORY_RINGTONES 组合使用,以将某个声音文件标记为多种类型。
自此版本开始引入 应用编程接口级别8
标准目录 ,其中放置的是,应当出现 在用户待选的铃声列表( 不是作为常规音乐 )中的那些声音文件。 可与 DIRECTORY_MUSIC 、 DIRECTORY_PODCASTS 、 DIRECTORY_NOTIFICATIONS 和 DIRECTORY_ALARMS 组合使用, 以将某个声音文件标记为多种类型。
自此版本开始引入 应用编程接口级别1
返回用户的数据目录。
自此版本开始引入 应用编程接口级别1
返回 主外部存储 的 目录。 这个目录当前不一定可用,因为: 它可能被用户挂载到电脑上了;可能 从当前设备中拔除了;或者 ,可能发生了其它问题。 妳可以使用 getExternalStorageState() 来得知它的当前状态。
注意 : 不要纠结于此处的 "外部"字眼 。 这个目录 ,换个角度来看待更合适,可以将它看作媒体/共享存储 。 它是一个储存着海量数据的文件系统,并且 是被所有应用程序共享的(不要求权限)。传 统上,它是一个 SD 卡,但是呢, 它也可能被实现为一个内置的存储空间, 与受保护的内部存储相区分,并且 可以被挂载到电脑上成为一个文件系统。
在拥有多个用户(参考 UserManager )的设备上,每个用户都有它自己的受隔离的外部存储。应用程序只能 够访问到它们正在 以其身份 运行 的那个用户的外部存储。
在那些拥有多个"外部"存储目录的设备上,这个目录代表着用户与之交互的“首要”外部存储。
应用程序 不应当直接使用这个顶级目录, 以免污染了用户的顶级命名空间。应用程序自身 的任何私有文件,都应当放置到由 Context.getExternalFilesDir 所返回的目录里,系统 会在应用程序被卸载时删除该目录。其它 的共享文件呢,应当被放置在由 getExternalStoragePublicDirectory(String) 所返回的某个目录里。
自从 KITKAT 开始 ,如果 妳的应用程序只需要存储内部数据的话,那么,请考虑使用 getExternalFilesDir(String) 或 getExternalCacheDir() , 它们在进行读写时不需要任何权限。
这个路径可能会随着平台的版本变化而变化,所以,在应用程序当中应当只存储相对路径。
以下是一段示例代码,用来监视外部存储的状态:
BroadcastReceiver mExternalStorageReceiver ;
boolean mExternalStorageAvailable = false ;
boolean mExternalStorageWriteable = false ;
void updateExternalStorageState () {
String state = Environment . getExternalStorageState ();
if ( Environment . MEDIA_MOUNTED . equals ( state )) {
mExternalStorageAvailable = mExternalStorageWriteable = true ;
} else if ( Environment . MEDIA_MOUNTED_READ_ONLY . equals ( state )) {
mExternalStorageAvailable = true ;
mExternalStorageWriteable = false ;
} else {
mExternalStorageAvailable = mExternalStorageWriteable = false ;
}
handleExternalStorageState ( mExternalStorageAvailable ,
mExternalStorageWriteable );
}
void startWatchingExternalStorage () {
mExternalStorageReceiver = new BroadcastReceiver () {
@Override
public void onReceive ( Context context , Intent intent ) {
Log . i ( "test" , "Storage: " + intent . getData ());
updateExternalStorageState ();
}
};
IntentFilter filter = new IntentFilter ();
filter . addAction ( Intent . ACTION_MEDIA_MOUNTED );
filter . addAction ( Intent . ACTION_MEDIA_REMOVED );
registerReceiver ( mExternalStorageReceiver , filter );
updateExternalStorageState ();
}
void stopWatchingExternalStorage () {
unregisterReceiver ( mExternalStorageReceiver );
}
自此版本开始引入 应用编程接口级别8
获取用来存储特定类型的文件的某个顶级公有外部存储目录。这是用户通常用来存储及管理它们自己的文件的地方,所以,妳应当小心行事,确保不要删除掉它们的文件,或者破坏了它们自己的组织条理。
在拥有多个用户(参考 UserManager )的设备上,每个用户都有它自己的受隔离的外部存储。应用程序只能 够访问到它们正在 以其身份 运行 的那个用户的外部存储。
以下是一段示例代码,用来处理公有外部存储中的一张图片:
void createExternalStoragePublicPicture () {
// 创建 一个路径,我们将在位于用户的公有图片目录中的这个路径里放置图片。
// 注意 ,请小心行事,因为用户通常也会将文件放置在这里。
// 对于 由应用程序所拥有的图片及 其它媒体文件 ,请考虑使用
// Context.getExternalMediaDir().
File path = Environment . getExternalStoragePublicDirectory (
Environment . DIRECTORY_PICTURES );
File file = new File ( path , "DemoPicture.jpg" );
try {
// 确保图片目录存在 。
path . mkdirs ();
// 狠简单的代码,从应用程序的资源中复制一张图片到外部文件中去。
// 注意 ,这砣代码不会做错误处理,并且假设这张图片狠小 ( 不尝试按照分块来复制它 ) 。注意 ,如果外部存储目前不是处于已挂载状态,
// 那么 ,这砣代码会失败。
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 ();
// 向媒体扫描器告知这个新文件的存在,以确保,用户立即能够看到 它。
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 ) {
// 无法创建文件,比如 说外部存储目前不是处于挂载状态。
Log . w ( "ExternalStorage" , "Error writing " + file , e );
}
}
void deleteExternalStoragePublicPicture () {
// 在用户的公有图片目录中创建一个路径,表示的是我们会用来存放照片的位置,然后删除该文件。
// 如果外部存储当前 未被挂载,则,此函数会失败。
File path = Environment . getExternalStoragePublicDirectory (
Environment . DIRECTORY_PICTURES );
File file = new File ( path , "DemoPicture.jpg" );
file . delete ();
}
boolean hasExternalStoragePublicPicture () {
// 创建一个指向用户的公有图片目录中某个文件的路径,表示的是我们会用来存放照片的位置,然后检查该文件是否存在。
// 如果外部存储当前 未被挂载,则我们认为该图片不存在。
File path = Environment . getExternalStoragePublicDirectory (
Environment . DIRECTORY_PICTURES );
File file = new File ( path , "DemoPicture.jpg" );
return file . exists ();
}
type |
要返回的存储目录的类型。应当 是 DIRECTORY_MUSIC 、 DIRECTORY_PODCASTS 、 DIRECTORY_RINGTONES 、 DIRECTORY_ALARMS 、 DIRECTORY_NOTIFICATIONS 、 DIRECTORY_PICTURES 、 DIRECTORY_MOVIES 、 DIRECTORY_DOWNLOADS 或 DIRECTORY_DCIM 中的一个。 不可以为空(null)。 |
•. 返回该目录对应的 File路径 。注意 ,这个目录不一定存在,因此, 在使用它之前,必须确保它存在,例如调用 File.mkdirs() 。
自此版本开始引入 应用编程接口级别21
返回提供了指定路径的存储设备的当前状态。
•. 以下值中的某一个: MEDIA_UNKNOWN 、 MEDIA_REMOVED 、 MEDIA_UNMOUNTED 、 MEDIA_CHECKING 、 MEDIA_NOFS 、 MEDIA_MOUNTED 、 MEDIA_MOUNTED_READ_ONLY 、 MEDIA_SHARED 、 MEDIA_BAD_REMOVAL 或 MEDIA_UNMOUNTABLE 。
自此版本开始引入 应用编程接口级别1
返回首要的“外部”存储设备的当前状态。
•. 以下值中的某一个: MEDIA_UNKNOWN 、 MEDIA_REMOVED 、 MEDIA_UNMOUNTED 、 MEDIA_CHECKING 、 MEDIA_NOFS 、 MEDIA_MOUNTED 、 MEDIA_MOUNTED_READ_ONLY 、 MEDIA_SHARED 、 MEDIA_BAD_REMOVAL 或 MEDIA_UNMOUNTABLE 。
未知美人
HxLauncher: Launch Android applications by voice commands