通过查询Android系统setting源代码掌握如何获取SD卡大小和可用空间

我们可以通过Android系统自带的setting功能查询到SD卡内存总大小和可用内存空间,如下图所示:

通过查询Android系统setting源代码掌握如何获取SD卡大小和可用空间_第1张图片

因此,我们可以通过查询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));


上面代码就是系统查询SD卡和可用空间所用的解决方案。

你可能感兴趣的:(java,android,xml,File,Path)