Class Overview

    提供环境变量的访问。

Summary

  Constants

    MEDIA_BAD_REMOVAL破坏性移除,感觉是。在未关机状态下拿下SD卡,并不返回这个常量。

    MEDIA_CHECKING:正在扫描SD卡,不知道什么情况下是这样的,在手机开机状态下,放入SD卡,并不返回这个常量。

    MEDIA_MOUNTED:此状态表示SD卡正常使用,并能read/write。

    MEDIA_MOUNTED_READ_ONLY:此状态表示SD卡可以使用,但是只能进行read访问。

    MEDIA_NOFS:SD卡能读取,但是不能使用,卡为空白或是系统不能识别的格式。

    MEDIA_REMOVED:SD卡已经移除。无法检测到SD卡的存在。

    MEDIA_SHARED:SD卡未安装,通过USB使用其他存储器,没测出来。

    MEDIA_UNMOUNTABLE:SD卡存在但不能被安装使用。

    MEDIA_UNMOUNTED:SD卡存在但没有安装使用。

  Fields

   DIRECTORY_ALARMS:此文件夹,默认存放系统提示铃声的。(不是常规音乐)

    DIRECTORY_DCIM:此文件夹,默认存放系统多媒体的,通过camera获得的东西。

    DIRECTORY_DOWNLOADS:此文件夹,默认存放系统下载的东西。

    DIRECTORY_MOVIES:此文件夹,默认存放系统的movie。

    DIRECTORY_MUSIC:此文件夹,默认存放系统的music。

    DIRECTORY_NOTIFICATIONS: 此文件夹,默认存放系统通知铃声的。(不是常规音乐)

    DIRECTORY_PICTURES:此文件夹,默认存放系统picture。

    DIRECTORY_PODCASTS:此文件夹,广播音乐,好像是电台什么的。(不是常规音乐)

    DIRECTORY_RINGTONES:此文件夹,存放来点的铃声。(不是常规音乐)

  Public Methods

getDataDirectory():返回系统中的data文件夹,此文件夹包含了安装软件的信息。

getDownloadCacheDirectory():返回系统的cache文件夹,此文件夹包含了下载/缓存的内容。

getExternalStorageDirectory():返回系统的外部存储文件夹,如SD卡。这个方法建议用Context.getgetExternalFilesDir(String type)这个方法来代替,新方法                     建立的文件夹如下/mnt/sdcard/Android/data/项目的名称/files/type。并且当应用卸载后,此文件夹也会卸载,方便管理。

getExternalStoragePublicDirectory:返回最上层的公共外部特定类型的文件存储目录。如/mnt/sdcard/type。

getExternalStorageState():返回外部主存储器的状态。Constants中的对象。

getRootDirectory():得到系统的root文件夹。

isExternalStorageEmulated():是否有仿真的外部存储器。

isExternalStorageRemovable():返回boolean,外部存储设备是否可以移动,即是否可以手动移除。

  Example

检测外部存储器的状态

//外部存储器是否可见
        boolean mExternalStorageAvailable =false; 
        //外部存储器是否写入
        boolean mExternalStorageWriteable =false; 
        //在使用外部存储器的时候,要先检查外部存储器的状态
        void update的ExternalStorageState(){ 
        //获得外部存储器的状态
          String state =Environment.getExternalStorageState(); 
        //可以使用
          if(Environment.MEDIA_MOUNTED.equals(state)){ 
            mExternalStorageAvailable = mExternalStorageWriteable =true; 
          }elseif(Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)){ 
        //只有读取权限
           mExternalStorageAvailable =true; 
           mExternalStorageWriteable =false; 
          }else{ 
        //没有任何权限
           mExternalStorageAvailable = mExternalStorageWriteable =false; 
          } 
      外部存储器文件的添加删除
//在外部存储器创建一个.jpg文件
              void createExternalStoragePublicPicture(){ 
          // Create a path where we will place our picture in the user's 
          // public pictures directory.  Note that you should be careful about 
          // what you place here, since the user often manages these files.  For 
          // pictures and other media owned by the application, consider 
          // Context.getExternalMediaDir(). 
          File path =Environment.getExternalStoragePublicDirectory( 
              Environment.DIRECTORY_PICTURES); 
           File file =newFile(path,"DemoPicture.jpg"); 
 
          try{ 
             // Make sure the Pictures directory exists. 
        //mkdirs()会自动检测文件是否存在,包括父文件夹,不存在就会创建。
             path.mkdirs(); 
 
             // 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. 
             InputStreamis= getResources().openRawResource(R.drawable.balloons); 
             OutputStream os =newFileOutputStream(file); 
             byte[] data =newbyte[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, 
                newString[]{ file.toString()},null, 
                newMediaScannerConnection.OnScanCompletedListener(){ 
             publicvoid 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 deleteExternalStoragePublicPicture(){ 
           // 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 =Environment.getExternalStoragePublicDirectory( 
            Environment.DIRECTORY_PICTURES); 
           File file =newFile(path,"DemoPicture.jpg"); 
           file.delete(); 
           } 
       //检测外部存储器中是否有这个文件
           boolean hasExternalStoragePublicPicture(){ 
           // 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 =Environment.getExternalStoragePublicDirectory( 
            Environment.DIRECTORY_PICTURES); 
           File file =newFile(path,"DemoPicture.jpg"); 
           return file.exists(); 
            }