summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/backup/BackupManager.java6
-rw-r--r--services/backup/java/com/android/server/backup/BackupManagerService.java18
2 files changed, 20 insertions, 4 deletions
diff --git a/core/java/android/app/backup/BackupManager.java b/core/java/android/app/backup/BackupManager.java
index 868fbfeeee39..bcc4974e4e64 100644
--- a/core/java/android/app/backup/BackupManager.java
+++ b/core/java/android/app/backup/BackupManager.java
@@ -762,6 +762,7 @@ public class BackupManager {
*/
@Nullable
public UserHandle getUserForAncestralSerialNumber(long ancestralSerialNumber) {
+ checkServiceBinder();
if (sService != null) {
try {
return sService.getUserForAncestralSerialNumber(ancestralSerialNumber);
@@ -782,6 +783,7 @@ public class BackupManager {
@SystemApi
@RequiresPermission(android.Manifest.permission.BACKUP)
public void setAncestralSerialNumber(long ancestralSerialNumber) {
+ checkServiceBinder();
if (sService != null) {
try {
sService.setAncestralSerialNumber(ancestralSerialNumber);
@@ -802,6 +804,7 @@ public class BackupManager {
@TestApi
@RequiresPermission(android.Manifest.permission.BACKUP)
public Intent getConfigurationIntent(String transportName) {
+ checkServiceBinder();
if (sService != null) {
try {
return sService.getConfigurationIntentForUser(mContext.getUserId(), transportName);
@@ -823,6 +826,7 @@ public class BackupManager {
@TestApi
@RequiresPermission(android.Manifest.permission.BACKUP)
public String getDestinationString(String transportName) {
+ checkServiceBinder();
if (sService != null) {
try {
return sService.getDestinationStringForUser(mContext.getUserId(), transportName);
@@ -844,6 +848,7 @@ public class BackupManager {
@TestApi
@RequiresPermission(android.Manifest.permission.BACKUP)
public Intent getDataManagementIntent(String transportName) {
+ checkServiceBinder();
if (sService != null) {
try {
return sService.getDataManagementIntentForUser(mContext.getUserId(), transportName);
@@ -867,6 +872,7 @@ public class BackupManager {
@TestApi
@RequiresPermission(android.Manifest.permission.BACKUP)
public String getDataManagementLabel(String transportName) {
+ checkServiceBinder();
if (sService != null) {
try {
return sService.getDataManagementLabelForUser(mContext.getUserId(), transportName);
diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java
index 0dd1ded40ead..ffda5819927b 100644
--- a/services/backup/java/com/android/server/backup/BackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/BackupManagerService.java
@@ -464,15 +464,25 @@ public class BackupManagerService {
*/
@Nullable
public UserHandle getUserForAncestralSerialNumber(long ancestralSerialNumber) {
- for (UserHandle handle : mContext.getSystemService(UserManager.class).getUserProfiles()) {
- UserBackupManagerService userBackupManagerService = getServiceUsers().get(
- handle.getIdentifier());
+ int callingUserId = Binder.getCallingUserHandle().getIdentifier();
+ long oldId = Binder.clearCallingIdentity();
+ int[] userIds;
+ try {
+ userIds = mContext.getSystemService(UserManager.class).getProfileIds(callingUserId,
+ false);
+ } finally {
+ Binder.restoreCallingIdentity(oldId);
+ }
+
+ for (int userId : userIds) {
+ UserBackupManagerService userBackupManagerService = getServiceUsers().get(userId);
if (userBackupManagerService != null) {
if (userBackupManagerService.getAncestralSerialNumber() == ancestralSerialNumber) {
- return handle;
+ return UserHandle.of(userId);
}
}
}
+
return null;
}