diff options
author | Jeff Sharkey <jsharkey@android.com> | 2015-08-16 02:48:13 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-08-16 02:48:13 +0000 |
commit | 4e9d52636a7af626f19997ec3e59006c86a44ce7 (patch) | |
tree | 42b6ab12098eb496c4c0716b26bdae6d4fdd54fd | |
parent | cc3ea300960f1fa1493a22f3dd13669257fe6e70 (diff) | |
parent | 5e699d593a38ed4f8bf4fc2ab570ff5568bbfea9 (diff) | |
download | android_packages_providers_MediaProvider-4e9d52636a7af626f19997ec3e59006c86a44ce7.tar.gz android_packages_providers_MediaProvider-4e9d52636a7af626f19997ec3e59006c86a44ce7.tar.bz2 android_packages_providers_MediaProvider-4e9d52636a7af626f19997ec3e59006c86a44ce7.zip |
am 5e699d59: am 4b708b16: am cba15caa: Update primary storage paths when volumes change.
* commit '5e699d593a38ed4f8bf4fc2ab570ff5568bbfea9':
Update primary storage paths when volumes change.
-rwxr-xr-x | src/com/android/providers/media/MediaProvider.java | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/com/android/providers/media/MediaProvider.java b/src/com/android/providers/media/MediaProvider.java index 0bbba768..271aa807 100755 --- a/src/com/android/providers/media/MediaProvider.java +++ b/src/com/android/providers/media/MediaProvider.java @@ -128,19 +128,21 @@ public class MediaProvider extends ContentProvider { private static final HashMap<String, String> sFolderArtMap = new HashMap<String, String>(); /** Resolved canonical path to external storage. */ - private static final String sExternalPath; + private String mExternalPath; /** Resolved canonical path to cache storage. */ - private static final String sCachePath; + private String mCachePath; /** Resolved canonical path to legacy storage. */ - private static final String sLegacyPath; + private String mLegacyPath; + + private void updateStoragePaths() { + mExternalStoragePaths = mStorageManager.getVolumePaths(); - static { try { - sExternalPath = + mExternalPath = Environment.getExternalStorageDirectory().getCanonicalPath() + File.separator; - sCachePath = + mCachePath = Environment.getDownloadCacheDirectory().getCanonicalPath() + File.separator; - sLegacyPath = + mLegacyPath = Environment.getLegacyExternalStorageDirectory().getCanonicalPath() + File.separator; } catch (IOException e) { @@ -4695,7 +4697,7 @@ public class MediaProvider extends ContentProvider { == PackageManager.PERMISSION_GRANTED); } - if (path.startsWith(sExternalPath) || path.startsWith(sLegacyPath)) { + if (path.startsWith(mExternalPath) || path.startsWith(mLegacyPath)) { if (isWrite) { if (!writeGranted) { enforceCallingOrSelfPermissionAndAppOps( @@ -4705,7 +4707,7 @@ public class MediaProvider extends ContentProvider { enforceCallingOrSelfPermissionAndAppOps( READ_EXTERNAL_STORAGE, "External path: " + path); } - } else if (path.startsWith(sCachePath)) { + } else if (path.startsWith(mCachePath)) { if ((isWrite && !writeGranted) || !readGranted) { c.enforceCallingOrSelfPermission(ACCESS_CACHE_FILESYSTEM, "Cache path: " + path); } @@ -4734,7 +4736,7 @@ public class MediaProvider extends ContentProvider { } private boolean isSecondaryExternalPath(String path) { - for (int i = mExternalStoragePaths.length - 1; i >= 0; --i) { + for (int i = 1; i < mExternalStoragePaths.length; i++) { if (path.startsWith(mExternalStoragePaths[i])) { return true; } @@ -5334,7 +5336,7 @@ public class MediaProvider extends ContentProvider { } // Update paths to reflect currently mounted volumes - mExternalStoragePaths = mStorageManager.getVolumePaths(); + updateStoragePaths(); synchronized (mDatabases) { if (mDatabases.get(volume) != null) { // Already attached @@ -5477,7 +5479,7 @@ public class MediaProvider extends ContentProvider { } // Update paths to reflect currently mounted volumes - mExternalStoragePaths = mStorageManager.getVolumePaths(); + updateStoragePaths(); String volume = uri.getPathSegments().get(0); if (INTERNAL_VOLUME.equals(volume)) { |