diff options
author | Svetoslav <svetoslavganov@google.com> | 2015-07-15 23:13:03 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-07-15 23:13:03 +0000 |
commit | eb16e1fb2225f2cf84f5c56242a187fba59e39f8 (patch) | |
tree | f41927ead4d51d6f74d0e39e2d23dbc18b831658 /core/java/android/os | |
parent | b6b97e90cb247560b880ae7269b5bfb1daa7aeef (diff) | |
parent | 08dda27be4678f2ab5bdc7e210d511ec105c158c (diff) | |
download | frameworks_base-eb16e1fb2225f2cf84f5c56242a187fba59e39f8.zip frameworks_base-eb16e1fb2225f2cf84f5c56242a187fba59e39f8.tar.gz frameworks_base-eb16e1fb2225f2cf84f5c56242a187fba59e39f8.tar.bz2 |
am 08dda27b: Merge "Make sure we get valid package name or fail." into mnc-dev
* commit '08dda27be4678f2ab5bdc7e210d511ec105c158c':
Make sure we get valid package name or fail.
Diffstat (limited to 'core/java/android/os')
-rw-r--r-- | core/java/android/os/storage/StorageManager.java | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java index e115c5e6..cbad78c 100644 --- a/core/java/android/os/storage/StorageManager.java +++ b/core/java/android/os/storage/StorageManager.java @@ -860,8 +860,23 @@ public class StorageManager { final IMountService mountService = IMountService.Stub.asInterface( ServiceManager.getService("mount")); try { - final String packageName = ActivityThread.currentOpPackageName(); + String packageName = ActivityThread.currentOpPackageName(); + if (packageName == null) { + // Package name can be null if the activity thread is running but the app + // hasn't bound yet. In this case we fall back to the first package in the + // current UID. This works for runtime permissions as permission state is + // per UID and permission realted app ops are updated for all UID packages. + String[] packageNames = ActivityThread.getPackageManager().getPackagesForUid( + android.os.Process.myUid()); + if (packageNames == null || packageNames.length <= 0) { + return new StorageVolume[0]; + } + packageName = packageNames[0]; + } final int uid = ActivityThread.getPackageManager().getPackageUid(packageName, userId); + if (uid <= 0) { + return new StorageVolume[0]; + } return mountService.getVolumeList(uid, packageName); } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); |