我们可以通过Android系统自带的setting功能查询到SD卡内存总大小和可用内存空间,如下图所示:
因此,我们可以通过查询setting的源代码来查看系统是如何实现的:
1. 拿到setting 源码, 在xml文件中搜索:Available space :
可搜索到代码:
<!-- SD card & phone storage settings title. The amount of free space for some storage partition. For example, this is listed under both the "Internal phone storage" section and the "SD card" section. -->
<string name="memory_available">Available space</string>
2. 继续在文件中搜索 memory_available , 找到如下代码:
<Preference android:key="memory_sd_avail"
style="?android:attr/preferenceInformationStyle"
android:title="@string/memory_available"
android:summary="00"/>
3.在Java文件中搜索:memory_sd_avail , 我们可以在
/android_setting/src/com/android/settings/deviceinfo/Memory.java 中找到以下代码:
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
findPreference("memory_internal_avail").setSummary(formatSize(availableBlocks * blockSize));