android - 可以获得总存储容量吗?

标签 android storage sd-card

我知道如何获取内部存储器和外部存储器的可用容量。

但是我想知道内部存储器的最大容量和外部存储器的最大容量,但是我在谷歌上找不到任何关于它的信息

有可能实现吗?

谢谢

最佳答案

API 18 中引入了一些新方法。这是我用来获取总存储量(内部+外部)的代码。

private static final long KILOBYTE = 1024;

StatFs internalStatFs = new StatFs( Environment.getRootDirectory().getAbsolutePath() );
long internalTotal;
long internalFree;

StatFs externalStatFs = new StatFs( Environment.getExternalStorageDirectory().getAbsolutePath() );
long externalTotal;
long externalFree;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
    internalTotal = ( internalStatFs.getBlockCountLong() * internalStatFs.getBlockSizeLong() ) / ( KILOBYTE * KILOBYTE );
    internalFree = ( internalStatFs.getAvailableBlocksLong() * internalStatFs.getBlockSizeLong() ) / ( KILOBYTE * KILOBYTE );
    externalTotal = ( externalStatFs.getBlockCountLong() * externalStatFs.getBlockSizeLong() ) / ( KILOBYTE * KILOBYTE );
    externalFree = ( externalStatFs.getAvailableBlocksLong() * externalStatFs.getBlockSizeLong() ) / ( KILOBYTE * KILOBYTE );
}
else {
    internalTotal = ( (long) internalStatFs.getBlockCount() * (long) internalStatFs.getBlockSize() ) / ( KILOBYTE * KILOBYTE );
    internalFree = ( (long) internalStatFs.getAvailableBlocks() * (long) internalStatFs.getBlockSize() ) / ( KILOBYTE * KILOBYTE );
    externalTotal = ( (long) externalStatFs.getBlockCount() * (long) externalStatFs.getBlockSize() ) / ( KILOBYTE * KILOBYTE );
    externalFree = ( (long) externalStatFs.getAvailableBlocks() * (long) externalStatFs.getBlockSize() ) / ( KILOBYTE * KILOBYTE );
}

long total = internalTotal + externalTotal;
long free = internalFree + externalFree;
long used = total - free;

关于android - 可以获得总存储容量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14531806/

相关文章:

java - 图片上传 android Java + Asp.net (C#)

git - Github 或任何其他基于云的存储库服务(Gitlab、Bitbucket)如何存储源代码文件和目录?

无法在 STM32F407 上使用 Chan FatFs 库通过 SPI 写入 SD 卡文件

android - 在sdcard中创建数据库

android - 已下载新的gradle,但实际上不起作用

java - 如何在SQLite中写入/覆盖和读取数据整数并在TextView中显示?

asp.net-core - 如何在 Asp NET Core 3.1 中存储访问 token ?

java - 使图像和文件夹对保存在 SD 卡上的图库不可见?

android - 共享指针 : are there any gotcha differences between Android's "sp<>" template and BOOST's "shared_ptr<>" template?

c# - 存储和检索应用程序设置的正确方法是什么?