diff --git a/core/java/android/os/storage/VolumeInfo.java b/core/java/android/os/storage/VolumeInfo.java index e6bb08836aeee..3edc154656c3d 100644 --- a/core/java/android/os/storage/VolumeInfo.java +++ b/core/java/android/os/storage/VolumeInfo.java @@ -200,6 +200,21 @@ public class VolumeInfo implements Parcelable { internalPath = parcel.readString8(); } + public VolumeInfo(VolumeInfo volumeInfo) { + this.id = volumeInfo.id; + this.type = volumeInfo.type; + this.disk = volumeInfo.disk; + this.partGuid = volumeInfo.partGuid; + this.mountFlags = volumeInfo.mountFlags; + this.mountUserId = volumeInfo.mountUserId; + this.state = volumeInfo.state; + this.fsType = volumeInfo.fsType; + this.fsUuid = volumeInfo.fsUuid; + this.fsLabel = volumeInfo.fsLabel; + this.path = volumeInfo.path; + this.internalPath = volumeInfo.internalPath; + } + @UnsupportedAppUsage public static @NonNull String getEnvironmentForState(int state) { final String envState = sStateToEnvironment.get(state); diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index 1147db511a87c..70ef44c3edb38 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -1391,12 +1391,13 @@ class StorageManagerService extends IStorageManager.Stub final int oldState = vol.state; final int newState = state; vol.state = newState; + final VolumeInfo vInfo = new VolumeInfo(vol); final SomeArgs args = SomeArgs.obtain(); - args.arg1 = vol; + args.arg1 = vInfo; args.arg2 = oldState; args.arg3 = newState; mHandler.obtainMessage(H_VOLUME_STATE_CHANGED, args).sendToTarget(); - onVolumeStateChangedLocked(vol, oldState, newState); + onVolumeStateChangedLocked(vInfo, oldState, newState); } } }