Most visited

Recently visited

Added in API level 1

Environment

public class Environment
extends Object

java.lang.Object
   ↳ android.os.Environment


提供对环境变量的访问。

Summary

Constants

String MEDIA_BAD_REMOVAL

存储状态,如果介质在卸载之前被删除。

String MEDIA_CHECKING

如果介质存在并正在进行磁盘检查,则为存储状态。

String MEDIA_EJECTING

存储状态,如果媒体正在被弹出的过程中。

String MEDIA_MOUNTED

存储状态,如果介质存在并且以读/写访问的方式安装在其安装点。

String MEDIA_MOUNTED_READ_ONLY

存储状态,如果介质存在并且以只读访问权限挂载到它的挂载点。

String MEDIA_NOFS

存储状态,如果介质存在但空白或正在使用不受支持的文件系统。

String MEDIA_REMOVED

存储状态,如果介质不存在。

String MEDIA_SHARED

存储状态,如果介质未安装,并通过USB海量存储共享。

String MEDIA_UNKNOWN

未知存储状态,例如路径未被已知存储介质支持时。

String MEDIA_UNMOUNTABLE

存储状态,如果介质存在但无法安装。

String MEDIA_UNMOUNTED

存储状态,如果介质存在但未安装。

Fields

public static String DIRECTORY_ALARMS

用于放置任何音频文件的标准目录,该文件应位于用户可以选择的闹铃列表中(而不是普通音乐)。

public static String DIRECTORY_DCIM

将设备安装为相机时的传统照片和视频位置。

public static String DIRECTORY_DOCUMENTS

在其中放置用户创建的文档的标准目录。

public static String DIRECTORY_DOWNLOADS

用于放置用户下载文件的标准目录。

public static String DIRECTORY_MOVIES

用于放置用户可用电影的标准目录。

public static String DIRECTORY_MUSIC

用于放置任何音频文件的标准目录,该文件应该位于用户的常规音乐列表中。

public static String DIRECTORY_NOTIFICATIONS

用于放置任何音频文件的标准目录,该文件应该位于用户可以选择的通知列表中(而不是普通音乐)。

public static String DIRECTORY_PICTURES

在其中放置可供用户使用的图片的标准目录。

public static String DIRECTORY_PODCASTS

用于放置任何音频文件的标准目录,该文件应该位于用户可以选择的播客列表中(而不是普通音乐)。

public static String DIRECTORY_RINGTONES

用于放置任何音频文件的标准目录,该文件应位于用户可以选择的铃声列表中(而不是普通音乐)。

Public constructors

Environment()

Public methods

static File getDataDirectory()

返回用户数据目录。

static File getDownloadCacheDirectory()

返回下载/缓存内容目录。

static File getExternalStorageDirectory()

返回主共享/外部存储目录。

static File getExternalStoragePublicDirectory(String type)

获取用于放置特定类型文件的顶级共享/外部存储目录。

static String getExternalStorageState()

返回主共享/外部存储媒体的当前状态。

static String getExternalStorageState(File path)

返回给定路径上的共享/外部存储介质的当前状态。

static File getRootDirectory()

返回持有核心Android OS的“系统”分区的根目录。

static String getStorageState(File path)

此方法在API级别21中已弃用。请使用getExternalStorageState(File)

static boolean isExternalStorageEmulated()

返回是否模拟主要共享/外部存储介质。

static boolean isExternalStorageEmulated(File path)

返回是否仿真给定路径上的共享/外部存储介质。

static boolean isExternalStorageRemovable()

返回主共享/外部存储介质是否可物理移除。

static boolean isExternalStorageRemovable(File path)

返回给定路径上的共享/外部存储介质是否可物理移除。

Inherited methods

From class java.lang.Object

Constants

MEDIA_BAD_REMOVAL

Added in API level 1
String MEDIA_BAD_REMOVAL

存储状态,如果介质在卸载之前被删除。

也可以看看:

常量值:“bad_removal”

MEDIA_CHECKING

Added in API level 3
String MEDIA_CHECKING

如果介质存在并正在进行磁盘检查,则为存储状态。

也可以看看:

常量值:“检查”

MEDIA_EJECTING

Added in API level 23
String MEDIA_EJECTING

存储状态,如果媒体正在被弹出的过程中。

也可以看看:

常数值:“弹出”

MEDIA_MOUNTED

Added in API level 1
String MEDIA_MOUNTED

存储状态,如果介质存在并且以读/写访问的方式安装在其安装点。

也可以看看:

常数值:“挂载”

MEDIA_MOUNTED_READ_ONLY

Added in API level 1
String MEDIA_MOUNTED_READ_ONLY

存储状态,如果介质存在并且以只读访问权限挂载到它的挂载点。

也可以看看:

常量值:“mounted_ro”

MEDIA_NOFS

Added in API level 3
String MEDIA_NOFS

存储状态,如果介质存在但空白或正在使用不受支持的文件系统。

也可以看看:

常数值:“nofs”

MEDIA_REMOVED

Added in API level 1
String MEDIA_REMOVED

存储状态,如果介质不存在。

也可以看看:

常量值:“已删除”

MEDIA_SHARED

Added in API level 1
String MEDIA_SHARED

存储状态,如果介质未安装,并通过USB海量存储共享。

也可以看看:

常量值:“共享”

MEDIA_UNKNOWN

Added in API level 19
String MEDIA_UNKNOWN

未知存储状态,例如路径未被已知存储介质支持时。

也可以看看:

常量值:“未知”

MEDIA_UNMOUNTABLE

Added in API level 1
String MEDIA_UNMOUNTABLE

存储状态,如果介质存在但无法安装。 通常,如果介质上的文件系统损坏,就会发生这种情况。

也可以看看:

常数值:“unmountable”

MEDIA_UNMOUNTED

Added in API level 1
String MEDIA_UNMOUNTED

存储状态,如果介质存在但未安装。

也可以看看:

常数值:“未安装”

Fields

DIRECTORY_ALARMS

Added in API level 8
String DIRECTORY_ALARMS

用于放置任何音频文件的标准目录,该文件应位于用户可以选择的闹铃列表中(而不是普通音乐)。 此可结合DIRECTORY_MUSICDIRECTORY_PODCASTSDIRECTORY_NOTIFICATIONSDIRECTORY_RINGTONES作为一系列目录到类别的特定音频文件作为一个以上的类型。

DIRECTORY_DCIM

Added in API level 8
String DIRECTORY_DCIM

将设备安装为相机时的传统照片和视频位置。 请注意,这主要是顶级公共目录的约定,因为这个约定在别处没有意义。

DIRECTORY_DOCUMENTS

Added in API level 19
String DIRECTORY_DOCUMENTS

在其中放置用户创建的文档的标准目录。

DIRECTORY_DOWNLOADS

Added in API level 8
String DIRECTORY_DOWNLOADS

用于放置用户下载文件的标准目录。 请注意,这主要是顶级公共目录的约定,您可以自由下载私人目录中的任何位置的文件。 还要注意,尽管这里的常量名为DIRECTORY_DOWNLOADS(复数),但由于向后兼容性的原因,实际的文件名是非复数的。

DIRECTORY_MOVIES

Added in API level 8
String DIRECTORY_MOVIES

用于放置用户可用电影的标准目录。 请注意,这主要是顶级公共目录的惯例,因为媒体扫描器将在任何目录中查找和收集电影。

DIRECTORY_MUSIC

Added in API level 8
String DIRECTORY_MUSIC

用于放置任何音频文件的标准目录,该文件应该位于用户的常规音乐列表中。 此可结合DIRECTORY_PODCASTSDIRECTORY_NOTIFICATIONSDIRECTORY_ALARMSDIRECTORY_RINGTONES作为一系列目录到类别的特定音频文件作为一个以上的类型。

DIRECTORY_NOTIFICATIONS

Added in API level 8
String DIRECTORY_NOTIFICATIONS

用于放置任何音频文件的标准目录,该文件应该位于用户可以选择的通知列表中(而不是普通音乐)。 此可结合DIRECTORY_MUSICDIRECTORY_PODCASTSDIRECTORY_ALARMSDIRECTORY_RINGTONES作为一系列目录到类别的特定音频文件作为一个以上的类型。

DIRECTORY_PICTURES

Added in API level 8
String DIRECTORY_PICTURES

在其中放置可供用户使用的图片的标准目录。 请注意,这主要是顶级公共目录的约定,因为媒体扫描器将在任何目录中查找和收集图片。

DIRECTORY_PODCASTS

Added in API level 8
String DIRECTORY_PODCASTS

用于放置任何音频文件的标准目录,该文件应该位于用户可以选择的播客列表中(而不是普通音乐)。 此可结合DIRECTORY_MUSICDIRECTORY_NOTIFICATIONSDIRECTORY_ALARMSDIRECTORY_RINGTONES作为一系列目录到类别的特定音频文件作为一个以上的类型。

DIRECTORY_RINGTONES

Added in API level 8
String DIRECTORY_RINGTONES

用于放置任何音频文件的标准目录,该文件应位于用户可以选择的铃声列表中(而不是普通音乐)。 此可结合DIRECTORY_MUSICDIRECTORY_PODCASTSDIRECTORY_NOTIFICATIONSDIRECTORY_ALARMS作为一系列目录到类别的特定音频文件作为一个以上的类型。

Public constructors

Environment

Added in API level 1
Environment ()

Public methods

getDataDirectory

Added in API level 1
File getDataDirectory ()

返回用户数据目录。

Returns
File

getDownloadCacheDirectory

Added in API level 1
File getDownloadCacheDirectory ()

返回下载/缓存内容目录。

Returns
File

getExternalStorageDirectory

Added in API level 1
File getExternalStorageDirectory ()

返回主共享/外部存储目录。 如果用户在他们的计算机上安装了该目录,该设备目前可能无法访问,该设备已从设备中删除,或发生其他问题。 您可以使用getExternalStorageState()确定其当前状态。

注意:不要被这里的“外部”一词所迷惑。 这个目录可以更好地被认为是媒体/共享存储。 它是一个文件系统,可以容纳大量的数据并在所有应用程序之间共享(不强制执行权限)。 传统上这是一张SD卡,但它也可以实现为与受保护的内部存储器不同的设备中的内置存储器,并且可以作为文件系统安装在计算机上。

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

在具有多个共享/外部存储目录的设备中,此目录代表用户将与之交互的主存储。 进入二级存储,可通过getExternalFilesDirs(String)getExternalCacheDirs() ,并getExternalMediaDirs()

应用程序不应直接使用此顶级目录,以避免污染用户的根名称空间。 应用程序专用的任何文件都应放置在由Context.getExternalFilesDir返回的Context.getExternalFilesDir ,如果应用程序已卸载,系统将负责删除该目录。 其他共享文件应放置在由getExternalStoragePublicDirectory(String)返回的其中一个目录中。

写入此路径需要 WRITE_EXTERNAL_STORAGE权限,并且从 KITKAT开始,读取访问权限需要 READ_EXTERNAL_STORAGE权限,如果您拥有写入权限,则会自动授予该权限。

开始在 KITKAT ,如果你的应用程序只需要存储内部数据,可以考虑使用 getExternalFilesDir(String)getExternalCacheDir() ,或 getExternalMediaDirs() ,它不需要的权限读取或写入。

此路径可能会在平台版本之间发生变化,因此应用程序应该只保留相对路径。

以下是监视外部存储状态的典型代码示例:

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

Returns
File

也可以看看:

getExternalStoragePublicDirectory

Added in API level 8
File getExternalStoragePublicDirectory (String type)

获取用于放置特定类型文件的顶级共享/外部存储目录。 这是用户通常放置和管理他们自己的文件的地方,因此,您应该注意您放置在这里的内容,以确保您不会擦除文件或妨碍他们自己的组织。

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

以下是在公共共享存储上操作图片的典型代码示例:

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 = new File(path, "DemoPicture.jpg");

    try {
        // Make sure the Pictures directory exists.
        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.
        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 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 = new File(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 = new File(path, "DemoPicture.jpg");
    return file.exists();
}

Parameters
type String: The type of storage directory to return. Should be one of DIRECTORY_MUSIC, DIRECTORY_PODCASTS, DIRECTORY_RINGTONES, DIRECTORY_ALARMS, DIRECTORY_NOTIFICATIONS, DIRECTORY_PICTURES, DIRECTORY_MOVIES, DIRECTORY_DOWNLOADS, DIRECTORY_DCIM, or DIRECTORY_DOCUMENTS. May not be null.
Returns
File Returns the File path for the directory. Note that this directory may not yet exist, so you must make sure it exists before using it such as with File.mkdirs().

getExternalStorageState

Added in API level 1
String getExternalStorageState ()

返回主共享/外部存储媒体的当前状态。

Returns
String one of MEDIA_UNKNOWN, MEDIA_REMOVED, MEDIA_UNMOUNTED, MEDIA_CHECKING, MEDIA_NOFS, MEDIA_MOUNTED, MEDIA_MOUNTED_READ_ONLY, MEDIA_SHARED, MEDIA_BAD_REMOVAL, or MEDIA_UNMOUNTABLE.

也可以看看:

getExternalStorageState

Added in API level 21
String getExternalStorageState (File path)

返回给定路径上的共享/外部存储介质的当前状态。

Parameters
path File
Returns
String one of MEDIA_UNKNOWN, MEDIA_REMOVED, MEDIA_UNMOUNTED, MEDIA_CHECKING, MEDIA_NOFS, MEDIA_MOUNTED, MEDIA_MOUNTED_READ_ONLY, MEDIA_SHARED, MEDIA_BAD_REMOVAL, or MEDIA_UNMOUNTABLE.

getRootDirectory

Added in API level 1
File getRootDirectory ()

返回持有核心Android OS的“系统”分区的根目录。 始终呈现并安装为只读。

Returns
File

getStorageState

Added in API level 19
String getStorageState (File path)

此方法在API级别21中已弃用。
使用getExternalStorageState(File)

Parameters
path File
Returns
String

isExternalStorageEmulated

Added in API level 11
boolean isExternalStorageEmulated ()

返回是否模拟主要共享/外部存储介质。

模拟存储设备的内容由专用用户数据分区提供支持,这意味着在此存储数据的应用程序没有什么益处,而不是由 getFilesDir()等返回的专用目录。

当模拟存储由内部存储或采用的存储设备支持时,此操作返回true。

Returns
boolean

也可以看看:

isExternalStorageEmulated

Added in API level 21
boolean isExternalStorageEmulated (File path)

返回是否仿真给定路径上的共享/外部存储介质。

模拟存储设备的内容由专用用户数据分区提供支持,这意味着在此存储数据的应用程序没有什么益处,而不是由 getFilesDir()等返回的专用目录。

当模拟存储由内部存储或采用的存储设备支持时,此操作返回true。

Parameters
path File
Returns
boolean
Throws
IllegalArgumentException if the path is not a valid storage device.

isExternalStorageRemovable

Added in API level 9
boolean isExternalStorageRemovable ()

返回主共享/外部存储介质是否可物理移除。

Returns
boolean true if the storage device can be removed (such as an SD card), or false if the storage device is built in and cannot be physically removed.

isExternalStorageRemovable

Added in API level 21
boolean isExternalStorageRemovable (File path)

返回给定路径上的共享/外部存储介质是否可物理移除。

Parameters
path File
Returns
boolean true if the storage device can be removed (such as an SD card), or false if the storage device is built in and cannot be physically removed.
Throws
IllegalArgumentException if the path is not a valid storage device.

Hooray!