开发中有时要知道SD卡存储容量的情况那么你要是不知道怎么获取怎么办?去某度搜一下不就好了?搜一下确实能看到很多例子,但几乎是一模一样的首先要有权限再根据路径得到一个StatFs对象使用用StatFs对象可以得到SD卡中块的大小(getBlockSize)和块的总数(getBlockCount)然后用块数量乘以块大小,就等到了最容量的字节数剩余空间的大小用getAvailableBlocks去乘以块大小(getBlockSize)嗯,这个看起来应该是没有什么问题的但是你如果照着写,会发现getBlockSize、getBlockCount、getAvailableBlocks都被标上了@Deprecated,过时了,下面我们就来说一说关于android怎么获取sd卡?我们一起去了解并探讨一下这个问题吧!

android怎么获取sd卡(获取Android手机中SD卡存储容量)

android怎么获取sd卡

开发中有时要知道SD卡存储容量的情况。那么你要是不知道怎么获取怎么办?去某度搜一下不就好了?搜一下确实能看到很多例子,但几乎是一模一样的。首先要有权限。再根据路径得到一个StatFs对象。使用用StatFs对象可以得到SD卡中块的大小(getBlockSize)和块的总数(getBlockCount)。然后用块数量乘以块大小,就等到了最容量的字节数。剩余空间的大小用getAvailableBlocks去乘以块大小(getBlockSize)。嗯,这个看起来应该是没有什么问题的。但是你如果照着写,会发现getBlockSize、getBlockCount、getAvailableBlocks都被标上了@Deprecated,过时了。

过时了怎么办?自己看看源码吧。有getBlockSizeLong、getBlockCountLong、getAvailableBlocksLong。直接换成这三个就可以了?

还是再看看源码吧。有getTotalBytes,有getFreeBytes,我还用块去计算做什么?直接获取啊。getAvailableBytes和getFreeBytes有什么区别?getFreeBytes包含了普通应用无法访问的保留部分。

网上得到的东西,要带上脑子去使用。有些代码已经快有十年的历史了,还被某些人简单的复制粘贴出来,当新的文章来发表。

下面是用kotlin代码写的。这几行kotlin代码和java的不同之处只是没有了new和get,类型也是自动判断的。

val rootFile = Environment.getExternalStorageDirectory() val stateFs = StatFs(rootFile.absolutePath) val totalSize = stateFs.totalBytes val freeSize = stateFs.freeBytes

,