diff --git a/src/com/android/settings/media/MediaOutputSlice.java b/src/com/android/settings/media/MediaOutputSlice.java index 232986c45e0..e76bc88ae39 100644 --- a/src/com/android/settings/media/MediaOutputSlice.java +++ b/src/com/android/settings/media/MediaOutputSlice.java @@ -76,6 +76,11 @@ public class MediaOutputSlice implements CustomSliceable { return null; } + if (getWorker() == null) { + Log.d(TAG, "getSlice() Can not get worker through uri!"); + return null; + } + final List devices = getMediaDevices(); @ColorInt final int color = Utils.getColorAccentDefaultColor(mContext); @@ -115,13 +120,15 @@ public class MediaOutputSlice implements CustomSliceable { private MediaDeviceUpdateWorker getWorker() { if (mWorker == null) { mWorker = (MediaDeviceUpdateWorker) SliceBackgroundWorker.getInstance(getUri()); - mWorker.setPackageName(mPackageName); + if (mWorker != null) { + mWorker.setPackageName(mPackageName); + } } return mWorker; } private List getMediaDevices() { - List devices = getWorker().getMediaDevices(); + final List devices = getWorker().getMediaDevices(); return devices; } diff --git a/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java b/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java index da0d85b5472..d26a458011a 100644 --- a/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java +++ b/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java @@ -93,6 +93,13 @@ public class MediaOutputSliceTest { mMediaOutputSlice.init(TEST_PACKAGE_NAME, mMediaDeviceUpdateWorker); } + @Test + public void getSlice_workerIsNull_shouldNotCrash() { + mMediaOutputSlice.init(TEST_PACKAGE_NAME, null); + + mMediaOutputSlice.getSlice(); + } + @Test public void getSlice_shouldHaveActiveDeviceName() { mDevices.clear();