summaryrefslogtreecommitdiffstats
path: root/src/com/android/providers
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2015-08-19 14:18:19 -0700
committerJeff Sharkey <jsharkey@android.com>2015-08-19 15:27:28 -0700
commit72613f7b12d1991d1e8e99a6621b6317132cfdc7 (patch)
tree4c7092d376dfd10bf9a4a2b18a7116a4480a31ef /src/com/android/providers
parentcba15caa4ee3f5948140d6fde91518f3f263f5b4 (diff)
downloadandroid_packages_providers_MediaProvider-72613f7b12d1991d1e8e99a6621b6317132cfdc7.tar.gz
android_packages_providers_MediaProvider-72613f7b12d1991d1e8e99a6621b6317132cfdc7.tar.bz2
android_packages_providers_MediaProvider-72613f7b12d1991d1e8e99a6621b6317132cfdc7.zip
Create default directories on all storage devices.
Previously, MediaProvider would only create default directories once during the lifetime of a device. However, we're now regularly wiping storage devices when formatted as internal or portable, so we should create these directories the first time we encounter each device. Bug: 23329611 Change-Id: I71f8e9b47ad28c9883925c61f31ae61a070cc9b4
Diffstat (limited to 'src/com/android/providers')
-rwxr-xr-xsrc/com/android/providers/media/MediaProvider.java52
1 files changed, 32 insertions, 20 deletions
diff --git a/src/com/android/providers/media/MediaProvider.java b/src/com/android/providers/media/MediaProvider.java
index 271aa807..180fbef0 100755
--- a/src/com/android/providers/media/MediaProvider.java
+++ b/src/com/android/providers/media/MediaProvider.java
@@ -539,25 +539,33 @@ public class MediaProvider extends ContentProvider {
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) {
+ /**
+ * 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) {
+ final StorageVolume vol = mStorageManager.getPrimaryVolume();
+ final String key;
+ if (VolumeInfo.ID_EMULATED_INTERNAL.equals(vol.getId())) {
+ key = "created_default_folders";
+ } else {
+ key = "created_default_folders_" + vol.getUuid();
+ }
+
+ final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
+ if (prefs.getInt(key, 0) == 0) {
for (String folderName : sDefaultFolderNames) {
- File file = Environment.getExternalStoragePublicDirectory(folderName);
- if (!file.exists()) {
- file.mkdirs();
- insertDirectory(helper, db, file.getAbsolutePath());
+ final File folder = new File(vol.getPathFile(), folderName);
+ if (!folder.exists()) {
+ folder.mkdirs();
+ insertDirectory(helper, db, folder.getAbsolutePath());
}
}
- SharedPreferences.Editor e = prefs.edit();
- e.clear();
- e.putInt("created_default_folders", 1);
- e.commit();
+ SharedPreferences.Editor editor = prefs.edit();
+ editor.putInt(key, 1);
+ editor.commit();
}
}
@@ -5338,13 +5346,17 @@ public class MediaProvider extends ContentProvider {
// Update paths to reflect currently mounted volumes
updateStoragePaths();
+ DatabaseHelper helper = null;
synchronized (mDatabases) {
- if (mDatabases.get(volume) != null) { // Already attached
+ helper = mDatabases.get(volume);
+ if (helper != null) {
+ if (EXTERNAL_VOLUME.equals(volume)) {
+ ensureDefaultFolders(helper, helper.getWritableDatabase());
+ }
return Uri.parse("content://media/" + volume);
}
Context context = getContext();
- DatabaseHelper helper;
if (INTERNAL_VOLUME.equals(volume)) {
helper = new DatabaseHelper(context, INTERNAL_DATABASE_NAME, true,
false, mObjectRemovedCallback);
@@ -5432,9 +5444,6 @@ public class MediaProvider extends ContentProvider {
mDatabases.put(volume, helper);
if (!helper.mInternal) {
- // create default directories (only happens on first boot)
- createDefaultFolders(helper, helper.getWritableDatabase());
-
// clean up stray album art files: delete every file not in the database
File[] files = new File(mExternalStoragePaths[0], ALBUM_THUMB_FOLDER).listFiles();
HashSet<String> fileSet = new HashSet();
@@ -5462,6 +5471,9 @@ public class MediaProvider extends ContentProvider {
}
if (LOCAL_LOGV) Log.v(TAG, "Attached volume: " + volume);
+ if (EXTERNAL_VOLUME.equals(volume)) {
+ ensureDefaultFolders(helper, helper.getWritableDatabase());
+ }
return Uri.parse("content://media/" + volume);
}