Environment

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(); 
}

   

    

posted @ 2013-04-16 20:54  有情怀的人  阅读(943)  评论(0编辑  收藏  举报