Loading core/java/android/os/UserId.java +2 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ public final class UserId { /** A user id to indicate the currently active user */ public static final int USER_CURRENT = -2; /** A user id constant to indicate the "owner" user of the device */ public static final int USER_OWNER = 0; /** * Enable multi-user related side effects. Set this to false if there are problems with single Loading services/java/com/android/server/BackupManagerService.java +23 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ import android.os.Process; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemClock; import android.os.UserId; import android.os.WorkSource; import android.os.storage.IMountService; import android.provider.Settings; Loading Loading @@ -4845,6 +4846,18 @@ class BackupManagerService extends IBackupManager.Stub { // ----- IBackupManager binder interface ----- public void dataChanged(final String packageName) { final int callingUserHandle = UserId.getCallingUserId(); if (callingUserHandle != UserId.USER_OWNER) { // App is running under a non-owner user profile. For now, we do not back // up data from secondary user profiles. // TODO: backups for all user profiles. if (MORE_DEBUG) { Slog.v(TAG, "dataChanged(" + packageName + ") ignored because it's user " + callingUserHandle); } return; } final HashSet<String> targets = dataChangedTargets(packageName); if (targets == null) { Slog.w(TAG, "dataChanged but no participant pkg='" + packageName + "'" Loading Loading @@ -4937,6 +4950,11 @@ class BackupManagerService extends IBackupManager.Stub { boolean doAllApps, boolean includeSystem, String[] pkgList) { mContext.enforceCallingPermission(android.Manifest.permission.BACKUP, "fullBackup"); final int callingUserHandle = UserId.getCallingUserId(); if (callingUserHandle != UserId.USER_OWNER) { throw new IllegalStateException("Backup supported only for the device owner"); } // Validate if (!doAllApps) { if (!includeShared) { Loading Loading @@ -5001,6 +5019,11 @@ class BackupManagerService extends IBackupManager.Stub { public void fullRestore(ParcelFileDescriptor fd) { mContext.enforceCallingPermission(android.Manifest.permission.BACKUP, "fullRestore"); final int callingUserHandle = UserId.getCallingUserId(); if (callingUserHandle != UserId.USER_OWNER) { throw new IllegalStateException("Restore supported only for the device owner"); } long oldId = Binder.clearCallingIdentity(); try { Loading Loading
core/java/android/os/UserId.java +2 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ public final class UserId { /** A user id to indicate the currently active user */ public static final int USER_CURRENT = -2; /** A user id constant to indicate the "owner" user of the device */ public static final int USER_OWNER = 0; /** * Enable multi-user related side effects. Set this to false if there are problems with single Loading
services/java/com/android/server/BackupManagerService.java +23 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ import android.os.Process; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemClock; import android.os.UserId; import android.os.WorkSource; import android.os.storage.IMountService; import android.provider.Settings; Loading Loading @@ -4845,6 +4846,18 @@ class BackupManagerService extends IBackupManager.Stub { // ----- IBackupManager binder interface ----- public void dataChanged(final String packageName) { final int callingUserHandle = UserId.getCallingUserId(); if (callingUserHandle != UserId.USER_OWNER) { // App is running under a non-owner user profile. For now, we do not back // up data from secondary user profiles. // TODO: backups for all user profiles. if (MORE_DEBUG) { Slog.v(TAG, "dataChanged(" + packageName + ") ignored because it's user " + callingUserHandle); } return; } final HashSet<String> targets = dataChangedTargets(packageName); if (targets == null) { Slog.w(TAG, "dataChanged but no participant pkg='" + packageName + "'" Loading Loading @@ -4937,6 +4950,11 @@ class BackupManagerService extends IBackupManager.Stub { boolean doAllApps, boolean includeSystem, String[] pkgList) { mContext.enforceCallingPermission(android.Manifest.permission.BACKUP, "fullBackup"); final int callingUserHandle = UserId.getCallingUserId(); if (callingUserHandle != UserId.USER_OWNER) { throw new IllegalStateException("Backup supported only for the device owner"); } // Validate if (!doAllApps) { if (!includeShared) { Loading Loading @@ -5001,6 +5019,11 @@ class BackupManagerService extends IBackupManager.Stub { public void fullRestore(ParcelFileDescriptor fd) { mContext.enforceCallingPermission(android.Manifest.permission.BACKUP, "fullRestore"); final int callingUserHandle = UserId.getCallingUserId(); if (callingUserHandle != UserId.USER_OWNER) { throw new IllegalStateException("Restore supported only for the device owner"); } long oldId = Binder.clearCallingIdentity(); try { Loading