Android Public Directory就是android系统启动时创建的/sdcard目录下的如下几个目录
Alarms\
DCIM\
Download\
Movies\
Music\
Notifications\
Pictures\
Podcasts\
Ringtones\
这9个目录的创建代码在
packages/providers/MediaProvider/src/com/android/providers/media/MediaProvider.java
目录名称定义在
framework/base/core/java/android/os/Environment.java
public static String DIRECTORY_MUSIC = "Music";
public static String DIRECTORY_PODCASTS = "Podcasts";
public static String DIRECTORY_RINGTONES = "Ringtones";
public static String DIRECTORY_ALARMS = "Alarms";
public static String DIRECTORY_NOTIFICATIONS = "Notifications";
public static String DIRECTORY_PICTURES = "Pictures";
public static String DIRECTORY_MOVIES = "Movies";
public static String DIRECTORY_DOWNLOADS = "Download";
public static String DIRECTORY_DCIM = "DCIM";
MediaProvider.java中创建目录代码如下:
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,
};
// creates default folders (Music, Downloads, etc)
private void createDefaultFolders(DatabaseHelper helper, SQLiteDatabase db) {
// Use a SharedPreference to ensure we only do this once.
// We don't want to annoy the user by recreating the directories
// after she has deleted them.
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
if (prefs.getInt("created_default_folders", 0) == 0) {
for (String folderName : sDefaultFolderNames) {
File file = Environment.getExternalStoragePublicDirectory(folderName);
if (!file.exists()) {
<span style="color:#ff0000;">file.mkdirs();</span>
insertDirectory(helper, db, file.getAbsolutePath());
}
}
SharedPreferences.Editor e = prefs.edit();
e.clear();
e.putInt("created_default_folders", 1);
e.commit();
}
}
如果想在系统启动时不去创建这几个目录,可以直接注释掉createDefaultFolders函数的调用
private Uri attachVolume(String volume) {
......
createDefaultFolders(helper, helper.getWritableDatabase());
......
}
次文章针对android4.2.2代码,其他版本有可能不同