diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java index 88c05b55116b8..3adf0f45dffc5 100644 --- a/services/backup/java/com/android/server/backup/BackupManagerService.java +++ b/services/backup/java/com/android/server/backup/BackupManagerService.java @@ -9573,7 +9573,14 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF public String[] getTransportWhitelist() { // No permission check, intentionally. - return mTransportManager.getTransportWhitelist().toArray(new String[0]); + Set whitelistedComponents = mTransportManager.getTransportWhitelist(); + String[] whitelistedTransports = new String[whitelistedComponents.size()]; + int i = 0; + for (ComponentName component : whitelistedComponents) { + whitelistedTransports[i] = component.flattenToShortString(); + i++; + } + return whitelistedTransports; } // Select which transport to use for the next backup operation. diff --git a/services/backup/java/com/android/server/backup/TransportManager.java b/services/backup/java/com/android/server/backup/TransportManager.java index 93d5a1ea8880b..b9dbe13af7c8c 100644 --- a/services/backup/java/com/android/server/backup/TransportManager.java +++ b/services/backup/java/com/android/server/backup/TransportManager.java @@ -31,6 +31,7 @@ import android.os.IBinder; import android.os.RemoteException; import android.os.UserHandle; import android.util.ArrayMap; +import android.util.ArraySet; import android.util.EventLog; import android.util.Log; import android.util.Slog; @@ -84,7 +85,7 @@ class TransportManager { TransportBoundListener listener) { mContext = context; mPackageManager = context.getPackageManager(); - mTransportWhitelist = whitelist; + mTransportWhitelist = (whitelist != null) ? whitelist : new ArraySet<>(); mCurrentTransportName = defaultTransport; mTransportBoundListener = listener; }