Fix possible NPE in StorageNotification.

Because findRecordByUuid() can return null, add a null check to avoid
NPE.

StorageNotification: Notifying about private volume: VolumeInfo{private}:
StorageNotification:     type=PRIVATE diskId=null partGuid=null mountFlags=0 mountUserId=-10000
StorageNotification:     state=MOUNTED
StorageNotification:     fsType=null fsUuid=null fsLabel=null
StorageNotification:     path=/data internalPath=null

AndroidRuntime: FATAL EXCEPTION: main
AndroidRuntime: Process: com.android.systemui, PID: 5952
AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.os.storage.VolumeRecord.isSnoozed()' on a null object reference
AndroidRuntime: 	at com.android.systemui.usb.StorageNotification.onVolumeStateChangedInternal(StorageNotification.java:337)
AndroidRuntime: 	at com.android.systemui.usb.StorageNotification.start(StorageNotification.java:114)

Bug: 253408750
Test: build, boot
Signed-off-by: Jimmy Hu <hhhuuu@google.com>
Change-Id: I8859d4d578ca040771bef9cf9870f91fb8d29628
This commit is contained in:
Jimmy Hu
2022-10-24 07:03:21 +00:00
parent e79e299e33
commit a31fd42029

View File

@@ -381,7 +381,7 @@ public class StorageNotification implements CoreStartable {
// Don't annoy when user dismissed in past. (But make sure the disk is adoptable; we
// used to allow snoozing non-adoptable disks too.)
if (rec.isSnoozed() && disk.isAdoptable()) {
if (rec == null || (rec.isSnoozed() && disk.isAdoptable())) {
return null;
}
if (disk.isAdoptable() && !rec.isInited() && rec.getType() != VolumeInfo.TYPE_PUBLIC