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();
* @hide
*/
public static File getMediaStorageDirectory() {
- throwIfSystem();
+ throwIfUserRequired();
return sCurrentUser.getMediaStorageDirectory();
}
* @see #isExternalStorageRemovable()
*/
public static File getExternalStorageDirectory() {
- throwIfSystem();
+ throwIfUserRequired();
return sCurrentUser.getExternalStorageDirectory();
}
* using it such as with {@link File#mkdirs File.mkdirs()}.
*/
public static File getExternalStoragePublicDirectory(String type) {
- throwIfSystem();
+ throwIfUserRequired();
return sCurrentUser.getExternalStoragePublicDirectory(type);
}
* @hide
*/
public static File getExternalStorageAndroidDataDir() {
- throwIfSystem();
+ throwIfUserRequired();
return sCurrentUser.getExternalStorageAndroidDataDir();
}
* @hide
*/
public static File getExternalStorageAppDataDirectory(String packageName) {
- throwIfSystem();
+ throwIfUserRequired();
return sCurrentUser.getExternalStorageAppDataDirectory(packageName);
}
* @hide
*/
public static File getExternalStorageAppMediaDirectory(String packageName) {
- throwIfSystem();
+ throwIfUserRequired();
return sCurrentUser.getExternalStorageAppMediaDirectory(packageName);
}
* @hide
*/
public static File getExternalStorageAppObbDirectory(String packageName) {
- throwIfSystem();
+ throwIfUserRequired();
return sCurrentUser.getExternalStorageAppObbDirectory(packageName);
}
* @hide
*/
public static File getExternalStorageAppFilesDirectory(String packageName) {
- throwIfSystem();
+ throwIfUserRequired();
return sCurrentUser.getExternalStorageAppFilesDirectory(packageName);
}
* @hide
*/
public static File getExternalStorageAppCacheDirectory(String packageName) {
- throwIfSystem();
+ throwIfUserRequired();
return sCurrentUser.getExternalStorageAppCacheDirectory(packageName);
}
}
}
- 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());
}
}
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;
// as efficient as possible with its memory usage.
VMRuntime.getRuntime().setTargetHeapUtilization(0.8f);
+ Environment.setUserRequired(true);
+
System.loadLibrary("android_servers");
init1(args);
}