Android - sdcard 中的默认文件夹(DCIM、下载等)何时创建?

Android - When are the default folders (DCIM, Downloads, etc.) in the sdcard created?

我正在构建一个自定义 Marshmallow Android 版本,我想在第一次启动时将一些文件添加到 sdcard - 具体来说,我希望它们是同时创建 DCIM、下载、铃声等。

默认文件夹结构何时创建?

虽然理论上您可以通过对字符串进行全文搜索来找到此类内容,但在数 GB 的代码库上这可能需要一段时间,因此对于查找位置有一些好的猜测会有所帮助。

事实证明,默认文件夹是在 MediaProvider.Java 中创建的,位于 packages/providers/MediaProvider

根据 Android 的特定版本,该方法可能称为 ensureDefaultFolders() 或 createDefaultFolders() 或其他名称。例如:

    private static final String[] sDefaultFolderNames = {
        Environment.DIRECTORY_MUSIC,
        Environment.DIRECTORY_PODCASTS,
        Environment.DIRECTORY_RINGTONES,
        Environment.DIRECTORY_ALARMS,
        Environment.DIRECTORY_NOTIFICATIONS,
        Environment.DIRECTORY_PICTURES,
        Environment.DIRECTORY_MOVIES,
        Environment.DIRECTORY_DOWNLOADS,
        Environment.DIRECTORY_DCIM,
    };
    /**
     * Ensure that default folders are created on mounted primary storage
     * devices. We only do this once per volume so we don't annoy the user if
     * deleted manually.
     */
    private void ensureDefaultFolders(DatabaseHelper helper, SQLiteDatabase db)