`
xiaoyaoniu
  • 浏览: 189358 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

Android 获取存储卡路径和空间使用情况

 
阅读更多
/** 获取存储卡路径 */  
 
  File sdcardDir=Environment.getExternalStorageDirectory();   
 
  /** StatFs 看文件系统空间使用情况 */  
 
  StatFs statFs=new StatFs(sdcardDir.getPath());   
 
  /** Block 的 size*/  
 
  Long blockSize=statFs.getBlockSize();   
 
  /** 总 Block 数量 */  
 
  Long totalBlocks=statFs.getBlockCount();   
 
  /** 已使用的 Block 数量 */  
 
  Long availableBlocks=statFs.getAvailableBlocks();

 

public class

Environment 英音:[in'vaiərənmənt]美音:[ɪn'vaɪrənmənt]

extends Object

<!-- end header -->

java.lang.Object
   ↳ android.os.Environment

Class Overview(类概述)


Provides access to environment variables. 提供访问环境变量。

 

 

常量

Constants
String MEDIA_BAD_REMOVAL getExternalStorageState() returns MEDIA_BAD_REMOVAL if the media was removed before it was unmounted.
String MEDIA_CHECKING getExternalStorageState() returns MEDIA_CHECKING if the media is present and being disk-checked
String MEDIA_MOUNTED getExternalStorageState() returns MEDIA_MOUNTED if the media is present and mounted at its mount point with read/write access.
String MEDIA_MOUNTED_READ_ONLY getExternalStorageState() returns MEDIA_MOUNTED_READ_ONLY if the media is present and mounted at its mount point with read only access.
String MEDIA_NOFS getExternalStorageState() returns MEDIA_NOFS if the media is present but is blank or is using an unsupported filesystem
String MEDIA_REMOVED getExternalStorageState() returns MEDIA_REMOVED if the media is not present.
String MEDIA_SHARED getExternalStorageState() returns MEDIA_SHARED if the media is present not mounted, and shared via USB mass storage.
String MEDIA_UNMOUNTABLE getExternalStorageState() returns MEDIA_UNMOUNTABLE if the media is present but cannot be mounted.
String MEDIA_UNMOUNTED getExternalStorageState() returns MEDIA_UNMOUNTED if the media is present but not mounted.

 

 

 

 

Public Constructors(构造函数)
  Environment()

<!-- ========== METHOD SUMMARY =========== -->

Public Methods
static File getDataDirectory() :    Gets the Android data directory.获取Android的数据目录
static File getDownloadCacheDirectory()  : Gets the Android Download/Cache content directory.获取的Andr​​oid下载/缓存内容的目录。
static File getExternalStorageDirectory()  :Gets the Android external storage directory.获取Android的外部存储目录。
static File getExternalStoragePublicDirectory(String type) :Get a top-level public external storage directory for placing files of a particular type.获取为特定类型的文件放在顶层的公共外部存储目录。
static String getExternalStorageState() :Gets the current state of the primary "external" storage device.获取的主要“外部”存储设备的当前状态。
static File getRootDirectory() :Gets the Android root directory.获取Android的根目录
static boolean isExternalStorageEmulated() :Returns whether the device has an external storage device which is emulated.返回设备是否有外部存储设备的仿真
static boolean isExternalStorageRemovable() :Returns whether the primary "external" storage device is removable.返回主“外部存储设备是否是可拆卸的。

 

 

public static File getExternalStorageDirectory ()

获取Android的外部存储目录。这个目录可能目前无法访问,如果它已被安装在其计算机上的用户,已被删除从设备,或发生其他一些问题。你可以确定其当前状态 getExternalStorageState() 

注意:不要被这里的“外部”字混淆。这个目录可以更好地被看作媒体/共享存储。这是一个文件系统,可容纳的数据量相对较大,跨所有应用程序共享(不执行的权限)。传统上,这是一个SD卡,但它也可作为内置存储设备,从受保护的内部存储是不同的,可以在计算机上的文件系统安装在实施。

在与多个“外部”存储目录(如既安全应用程序存储和挂载共享存储)设备中,这个目录表示“小学化”的用户将与外部存储。

应用程序不应该直接使用这个顶级目录,以避免污染用户的根命名空间。任何专用应用程序的文件,这些文件应该被放置在返回目录Context.getExternalFilesDir,该系统将采取删除,如果应用程序被卸载。其他共享文件应该被放置在一个由返回目录getExternalStoragePublicDirectory(字符串)

下面是一个典型的代码,例如监察外部存储的状态:

 

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

 

分享到:
评论

相关推荐

    Android 获取内外置存储卡

    总的来说,Android获取内外置存储卡的过程涉及多个API和权限管理。开发人员需要注意的是,由于Android系统的碎片化,不同的设备和Android版本可能会有不同的行为,因此在编写相关代码时应考虑兼容性和异常处理。同时...

    android 读取外置和内置存储卡路径和大小

    获取存储卡的总大小和可用空间,可以使用以下代码: ```java File file = new File("/path/to/storage"); // 替换为实际路径 StatFs stat = new StatFs(file.getPath()); long blockSize = stat.getBlockSizeLong();...

    Android获取外置SD卡路径

    在Android系统中,由于安全和隐私的考虑,访问外部存储(即外置SD卡)的权限在...同时,这种方法也可能因Android系统的未来发展而变得不再适用,因此建议在可能的情况下,优先使用官方提供的API和推荐的存储访问策略。

    android通过反射获取内置存储、SD、OTG盘的路径,适合三方apk存储查看与文件管理

    总之,通过反射机制,开发者可以在不依赖特定厂商实现的情况下,获取并管理Android设备上的各种存储路径,包括内置存储、SD卡和OTG设备,同时获取到它们的空间信息,以适应不同的设备环境。在`MountRootManagerRf....

    获取SD卡 TF卡 内置 外置存储卡路径例子

    在提供的压缩包文件"获取存储卡路径"中,可能包含了实现上述优化策略的代码示例,如自定义函数来获取不同类型的存储卡路径,或者实现了上述优化技术的文件读取类。通过研究这些代码,开发者可以更好地理解如何在实际...

    Android 通过反射调用获取内置存储和外置sd卡根路径(适用于各个版本)

    总的来说,通过反射调用获取Android的内置存储和外部SD卡的根路径是一种应对版本差异的有效手段,但同时也需要对设备的特定情况进行适配。在实际开发中,应遵循最佳实践,尽可能使用官方推荐的API,并确保在请求权...

    Unity应用获取外置SD卡路径方法

    在Android 6.0(API级别23)及更高版本中,系统对存储访问进行了权限管理,因此获取外置SD卡路径前,需要确保在`AndroidManifest.xml`中添加了相应的权限: ```xml &lt;uses-permission android:name="android....

    Android U盘读写 反射获取U盘路径

    内部存储是设备自身的存储空间,而外部存储包括SD卡和通过OTG连接的U盘。在Android 6.0(API级别23)及更高版本,用户需要在运行时授予读写外部存储的权限(`Manifest.permission.WRITE_EXTERNAL_STORAGE`和`...

    安卓SD卡文件管理更新信息相关-android读取外置和内置存储卡路径和大小.rar

    在Android系统中,管理和操作文件,尤其是涉及到SD卡(外置和内置存储卡)的文件操作,是开发者经常面临的一项任务。这篇资料主要探讨的是如何在Android应用中获取SD卡的路径以及计算其存储大小。以下是一些关键知识...

    获取SD卡路径及手机存储路径

    综上所述,获取Android设备的SD卡路径和手机存储路径主要涉及`Environment`类的使用,以及权限管理。在实际开发中,根据设备的不同,可能需要进行额外的兼容性处理,确保应用能在各种设备上正常工作。在提供的`...

    Android系统如何获取SD卡路径

    Android设备获取存储卡路径的源程序,高于3.2版本时,用getVolumePaths通过反射获取,否则通过System.getenv("SECONDARY_STORAGE")获取,再通过查询剩余空间确定是否插有SD卡

    Android获取SD卡路径及SDCard内存的方法

    在Android开发中,获取SD卡路径以及查询SDCard内存大小是常见的需求,这对于存储和管理应用程序的数据至关重要。本文将详细讲解如何实现这一功能,并介绍相关的类和方法。 首先,我们来了解一下获取SD卡路径的两种...

    android 内部存储读写 sd卡存储

    本篇文章将主要探讨Android中的内部存储与外部存储之一——SD卡存储的基本概念、特点及其使用方法。 #### 二、Android内部存储 Android内部存储指的是应用自身的私有存储空间,通常位于`/data/data/&lt;package name&gt;...

    android获取SDcard内存空间

    总结一下,本篇内容涵盖了Android获取SD卡内存空间的基本方法,包括获取存储状态、总空间、可用空间和已用空间,以及如何处理不同的Android版本和权限问题。这些知识对于任何涉及存储管理的Android应用都是必不可少...

    Android单图路径获取(华为小米通用)

    标题提到的"Android单图路径获取(华为小米通用)"表明这是一个适用于不同品牌手机(如华为和小米)的解决方案,因为不同厂商的Android系统可能会对存储路径做一些定制化改动。下面我们将深入探讨这一主题。 1. **...

    获取sd卡路径

    在本篇文章中,我们将深入探讨如何使用一种新颖的方法来获取Android设备上的SD卡路径,这种方法与传统的做法有所不同,最大的特点是无需在AndroidManifest.xml文件中声明额外的权限。 ### 一、背景介绍 在Android...

    android手机外置SDcard(TF卡)获取方法

    总之,Android设备的外置SDcard(TF卡)是扩展存储空间的重要途径,获取和管理TF卡涉及编程接口的使用、系统权限的控制以及用户界面的操作。理解这些知识点对于优化Android设备的存储管理和使用体验至关重要。

    Android编程获取SD卡路径及剩余容量的方法

    在Android平台上,获取SD卡...总之,获取SD卡路径和剩余容量是Android开发中常见且重要的任务。正确处理SD卡状态,合理使用`StatFs`类,以及遵循Android的权限管理规定,都是确保应用能正常访问和操作SD卡的关键。

    获取手机设备存储路径

    在Android系统中,获取手机设备的存储路径是开发者经常需要进行的操作,这涉及到对设备内部存储和外部存储(如SD卡)的访问。本篇将详细介绍如何在Android应用中获取这两种存储路径,并讨论其兼容性问题。 首先,...

    android 查询存储卡剩余容量 (Environment 加 StatFs)

    在Android系统中,开发者可以通过Java API来获取存储卡(外部存储)的剩余容量信息。这里主要涉及两个关键类:`Environment`和`StatFs`。`Environment`是Android提供的一个系统类,它提供了与文件系统相关的常量和...

Global site tag (gtag.js) - Google Analytics