diff options
author | Jeff Sharkey <jsharkey@android.com> | 2015-08-20 01:44:06 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-08-20 01:44:06 +0000 |
commit | 7c076ae06598a1016869b6ee90677fa52e060668 (patch) | |
tree | 2bc803767d8299234a23c188b03693bccff8ce28 | |
parent | 5e699d593a38ed4f8bf4fc2ab570ff5568bbfea9 (diff) | |
parent | 6ba8af3f828f33a2c25c227aa01d67c2202c2fe3 (diff) | |
download | android_packages_providers_MediaProvider-7c076ae06598a1016869b6ee90677fa52e060668.tar.gz android_packages_providers_MediaProvider-7c076ae06598a1016869b6ee90677fa52e060668.tar.bz2 android_packages_providers_MediaProvider-7c076ae06598a1016869b6ee90677fa52e060668.zip |
am 6ba8af3f: am 72613f7b: Create default directories on all storage devices.
* commit '6ba8af3f828f33a2c25c227aa01d67c2202c2fe3':
Create default directories on all storage devices.
-rwxr-xr-x | src/com/android/providers/media/MediaProvider.java | 52 |
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); } |