From c7acac6798e12780194af33d5a9fdf382ab17155 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Fri, 12 Jun 2015 16:16:56 -0700 Subject: [PATCH] More useful extras in disk/volume broadcasts. Change-Id: I594166cff332aaf72b2b6357ac6ed3e6e42cbc49 --- core/java/android/os/storage/DiskInfo.java | 2 ++ core/java/android/os/storage/VolumeInfo.java | 2 ++ .../java/com/android/server/MountService.java | 27 +++++++++++-------- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/core/java/android/os/storage/DiskInfo.java b/core/java/android/os/storage/DiskInfo.java index 5bc45d5720857..397d87e791470 100644 --- a/core/java/android/os/storage/DiskInfo.java +++ b/core/java/android/os/storage/DiskInfo.java @@ -40,6 +40,8 @@ public class DiskInfo implements Parcelable { "android.os.storage.action.DISK_SCANNED"; public static final String EXTRA_DISK_ID = "android.os.storage.extra.DISK_ID"; + public static final String EXTRA_VOLUME_COUNT = + "android.os.storage.extra.VOLUME_COUNT"; public static final int FLAG_ADOPTABLE = 1 << 0; public static final int FLAG_DEFAULT_PRIMARY = 1 << 1; diff --git a/core/java/android/os/storage/VolumeInfo.java b/core/java/android/os/storage/VolumeInfo.java index 372725f334426..8d115279291bc 100644 --- a/core/java/android/os/storage/VolumeInfo.java +++ b/core/java/android/os/storage/VolumeInfo.java @@ -55,6 +55,8 @@ public class VolumeInfo implements Parcelable { "android.os.storage.action.VOLUME_STATE_CHANGED"; public static final String EXTRA_VOLUME_ID = "android.os.storage.extra.VOLUME_ID"; + public static final String EXTRA_VOLUME_STATE = + "android.os.storage.extra.VOLUME_STATE"; /** Stub volume representing internal private storage */ public static final String ID_PRIVATE_INTERNAL = "private"; diff --git a/services/core/java/com/android/server/MountService.java b/services/core/java/com/android/server/MountService.java index f69626d6e1572..2427363da922a 100644 --- a/services/core/java/com/android/server/MountService.java +++ b/services/core/java/com/android/server/MountService.java @@ -991,17 +991,6 @@ class MountService extends IMountService.Stub } private void onDiskScannedLocked(DiskInfo disk) { - final Intent intent = new Intent(DiskInfo.ACTION_DISK_SCANNED); - intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); - intent.putExtra(DiskInfo.EXTRA_DISK_ID, disk.id); - mContext.sendBroadcastAsUser(intent, UserHandle.ALL, - android.Manifest.permission.WRITE_MEDIA_STORAGE); - - final CountDownLatch latch = mDiskScanLatches.remove(disk.id); - if (latch != null) { - latch.countDown(); - } - int volumeCount = 0; for (int i = 0; i < mVolumes.size(); i++) { final VolumeInfo vol = mVolumes.valueAt(i); @@ -1010,6 +999,18 @@ class MountService extends IMountService.Stub } } + final Intent intent = new Intent(DiskInfo.ACTION_DISK_SCANNED); + intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); + intent.putExtra(DiskInfo.EXTRA_DISK_ID, disk.id); + intent.putExtra(DiskInfo.EXTRA_VOLUME_COUNT, volumeCount); + mContext.sendBroadcastAsUser(intent, UserHandle.ALL, + android.Manifest.permission.WRITE_MEDIA_STORAGE); + + final CountDownLatch latch = mDiskScanLatches.remove(disk.id); + if (latch != null) { + latch.countDown(); + } + disk.volumeCount = volumeCount; mCallbacks.notifyDiskScanned(disk, volumeCount); } @@ -1061,6 +1062,7 @@ class MountService extends IMountService.Stub private boolean isBroadcastWorthy(VolumeInfo vol) { switch (vol.getType()) { + case VolumeInfo.TYPE_PRIVATE: case VolumeInfo.TYPE_PUBLIC: case VolumeInfo.TYPE_EMULATED: break; @@ -1073,6 +1075,7 @@ class MountService extends IMountService.Stub case VolumeInfo.STATE_MOUNTED_READ_ONLY: case VolumeInfo.STATE_EJECTING: case VolumeInfo.STATE_UNMOUNTED: + case VolumeInfo.STATE_UNMOUNTABLE: break; default: return false; @@ -1099,6 +1102,8 @@ class MountService extends IMountService.Stub if (isBroadcastWorthy(vol)) { final Intent intent = new Intent(VolumeInfo.ACTION_VOLUME_STATE_CHANGED); + intent.putExtra(VolumeInfo.EXTRA_VOLUME_ID, vol.id); + intent.putExtra(VolumeInfo.EXTRA_VOLUME_STATE, newState); intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); mContext.sendBroadcastAsUser(intent, UserHandle.ALL, android.Manifest.permission.WRITE_MEDIA_STORAGE);