diff options
author | Jerry Zhang <zhangjerry@google.com> | 2018-03-28 17:04:25 -0700 |
---|---|---|
committer | Jerry Zhang <zhangjerry@google.com> | 2018-03-28 17:08:44 -0700 |
commit | 07c898a6f6f93ef3c0eb2b841cf916b97ac0beed (patch) | |
tree | 5b6171e9f53b0a4071ae6f087e50ea773353a26d | |
parent | b394251d90e1a3e6aad36cc16d4255e42e4f98cc (diff) | |
download | MediaProvider-07c898a6f6f93ef3c0eb2b841cf916b97ac0beed.tar.gz |
Initialize volumes before registering listener
If we get a listener event before volumes are
initialized, it could cause a NPE.
Bug: 73656609
Test: passes
Change-Id: Id5aabc75e2e0ad320cedba1759a346715bdecf1d
-rw-r--r-- | src/com/android/providers/media/MtpService.java | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/com/android/providers/media/MtpService.java b/src/com/android/providers/media/MtpService.java index 072001019..d559b2baa 100644 --- a/src/com/android/providers/media/MtpService.java +++ b/src/com/android/providers/media/MtpService.java @@ -114,6 +114,9 @@ public class MtpService extends Service { @Override public void onCreate() { + mVolumes = StorageManager.getVolumeList(getUserId(), 0); + mVolumeMap = new HashMap<>(); + mStorageManager = this.getSystemService(StorageManager.class); mStorageManager.registerListener(mStorageEventListener); } @@ -130,11 +133,9 @@ public class MtpService extends Service { @Override public synchronized int onStartCommand(Intent intent, int flags, int startId) { - UserHandle user = new UserHandle(ActivityManager.getCurrentUser()); mUnlocked = intent.getBooleanExtra(UsbManager.USB_DATA_UNLOCKED, false); mPtpMode = intent.getBooleanExtra(UsbManager.USB_FUNCTION_PTP, false); - mVolumes = StorageManager.getVolumeList(getUserId(), 0); - mVolumeMap = new HashMap<>(); + for (StorageVolume v : mVolumes) { if (v.getState().equals(Environment.MEDIA_MOUNTED)) { mVolumeMap.put(v.getPath(), v); |