summaryrefslogtreecommitdiffstats
path: root/core/java/android/os
diff options
context:
space:
mode:
authorSvetoslav <svetoslavganov@google.com>2015-07-15 23:13:03 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-07-15 23:13:03 +0000
commiteb16e1fb2225f2cf84f5c56242a187fba59e39f8 (patch)
treef41927ead4d51d6f74d0e39e2d23dbc18b831658 /core/java/android/os
parentb6b97e90cb247560b880ae7269b5bfb1daa7aeef (diff)
parent08dda27be4678f2ab5bdc7e210d511ec105c158c (diff)
downloadframeworks_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.java17
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();