From 48749fc78afc982ac32cf98790a85ab2b8bed515 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Fri, 19 Apr 2013 13:25:04 -0700 Subject: [PATCH] Environment should only warn when asked. Instead of warning on Process.SYSTEM_UID, which is also used by the Settings app, change to have the parent process explicitly ask for warnings. Bug: 8667286 Change-Id: Ib26676694a4041ff4e6d3ffdcc14055b7eba13c7 --- core/java/android/os/Environment.java | 31 +++++++++++++--------- services/java/com/android/server/SystemServer.java | 3 +++ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/core/java/android/os/Environment.java b/core/java/android/os/Environment.java index d9846ecb2b21..61eef1f16997 100644 --- a/core/java/android/os/Environment.java +++ b/core/java/android/os/Environment.java @@ -51,6 +51,7 @@ public class Environment { private static final String SYSTEM_PROPERTY_EFS_ENABLED = "persist.security.efs.enabled"; private static UserEnvironment sCurrentUser; + private static boolean sUserRequired; private static final Object sLock = new Object(); @@ -223,7 +224,7 @@ public class Environment { * @hide */ public static File getMediaStorageDirectory() { - throwIfSystem(); + throwIfUserRequired(); return sCurrentUser.getMediaStorageDirectory(); } @@ -318,7 +319,7 @@ public class Environment { * @see #isExternalStorageRemovable() */ public static File getExternalStorageDirectory() { - throwIfSystem(); + throwIfUserRequired(); return sCurrentUser.getExternalStorageDirectory(); } @@ -465,7 +466,7 @@ public class Environment { * using it such as with {@link File#mkdirs File.mkdirs()}. */ public static File getExternalStoragePublicDirectory(String type) { - throwIfSystem(); + throwIfUserRequired(); return sCurrentUser.getExternalStoragePublicDirectory(type); } @@ -474,7 +475,7 @@ public class Environment { * @hide */ public static File getExternalStorageAndroidDataDir() { - throwIfSystem(); + throwIfUserRequired(); return sCurrentUser.getExternalStorageAndroidDataDir(); } @@ -483,7 +484,7 @@ public class Environment { * @hide */ public static File getExternalStorageAppDataDirectory(String packageName) { - throwIfSystem(); + throwIfUserRequired(); return sCurrentUser.getExternalStorageAppDataDirectory(packageName); } @@ -492,7 +493,7 @@ public class Environment { * @hide */ public static File getExternalStorageAppMediaDirectory(String packageName) { - throwIfSystem(); + throwIfUserRequired(); return sCurrentUser.getExternalStorageAppMediaDirectory(packageName); } @@ -501,7 +502,7 @@ public class Environment { * @hide */ public static File getExternalStorageAppObbDirectory(String packageName) { - throwIfSystem(); + throwIfUserRequired(); return sCurrentUser.getExternalStorageAppObbDirectory(packageName); } @@ -510,7 +511,7 @@ public class Environment { * @hide */ public static File getExternalStorageAppFilesDirectory(String packageName) { - throwIfSystem(); + throwIfUserRequired(); return sCurrentUser.getExternalStorageAppFilesDirectory(packageName); } @@ -519,7 +520,7 @@ public class Environment { * @hide */ public static File getExternalStorageAppCacheDirectory(String packageName) { - throwIfSystem(); + throwIfUserRequired(); return sCurrentUser.getExternalStorageAppCacheDirectory(packageName); } @@ -650,9 +651,15 @@ public class Environment { } } - private static void throwIfSystem() { - if (Process.myUid() == Process.SYSTEM_UID) { - Log.wtf(TAG, "Static storage paths aren't available from AID_SYSTEM", new Throwable()); + /** {@hide} */ + public static void setUserRequired(boolean userRequired) { + sUserRequired = userRequired; + } + + private static void throwIfUserRequired() { + if (sUserRequired) { + Log.wtf(TAG, "Path requests must specify a user by using UserEnvironment", + new Throwable()); } } diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index a30fc3b323f8..681c21da57f1 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -26,6 +26,7 @@ import android.content.pm.IPackageManager; import android.content.res.Configuration; import android.media.AudioService; import android.net.wifi.p2p.WifiP2pService; +import android.os.Environment; import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; @@ -1055,6 +1056,8 @@ public class SystemServer { // as efficient as possible with its memory usage. VMRuntime.getRuntime().setTargetHeapUtilization(0.8f); + Environment.setUserRequired(true); + System.loadLibrary("android_servers"); init1(args); } -- 2.11.0