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

Jin*_*Jin 1 android android-source android-sdcard android-6.0-marshmallow

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

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

Chr*_*ton 5

虽然从理论上讲,您可以通过对字符串进行全文搜索来找到这种东西,但这在数 GB 的代码库上可能需要一段时间,因此对在哪里查找有一些好的猜测是有帮助的。

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

根据 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)
Run Code Online (Sandbox Code Playgroud)