diff options
| author | Jeff DeCew <jeffdq@google.com> | 2021-03-17 10:57:56 -0400 |
|---|---|---|
| committer | Jeff DeCew <jeffdq@google.com> | 2021-03-17 11:06:43 -0400 |
| commit | 3f654a2cf6cb1f7b48013fcf0a88369a6b2e2a8a (patch) | |
| tree | db510f0f282088735e510a786208dafb71c6664b /core/java | |
| parent | 7003e6d3c128f3cc20a2658f1a9b52d998ccee30 (diff) | |
Fix an likely ClassCastException in Notification.visitUris
The code (and unit test) treated EXTRA_AUDIO_CONTENTS_URI as a Uri, but the extra is very explicitly documented as a String. Sample code and everything.
Fixes: 182997213
Test: atest NotificationManagerServiceTest#testVisitUris
Test: atest NotificationManagerServiceTest#testVisitUris_audioContentsString
Change-Id: I3cfc657f88d8e273270c777b199ce056ff2ffc67
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/app/Notification.java | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index a3a8a5e6c651..11572953a188 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -2673,7 +2673,17 @@ public class Notification implements Parcelable if (headsUpContentView != null) headsUpContentView.visitUris(visitor); if (extras != null) { - visitor.accept(extras.getParcelable(EXTRA_AUDIO_CONTENTS_URI)); + // NOTE: The documentation of EXTRA_AUDIO_CONTENTS_URI explicitly says that it is a + // String representation of a Uri, but the previous implementation (and unit test) of + // this method has always treated it as a Uri object. Given the inconsistency, + // supporting both going forward is the safest choice. + Object audioContentsUri = extras.get(EXTRA_AUDIO_CONTENTS_URI); + if (audioContentsUri instanceof Uri) { + visitor.accept((Uri) audioContentsUri); + } else if (audioContentsUri instanceof String) { + visitor.accept(Uri.parse((String) audioContentsUri)); + } + if (extras.containsKey(EXTRA_BACKGROUND_IMAGE_URI)) { visitor.accept(Uri.parse(extras.getString(EXTRA_BACKGROUND_IMAGE_URI))); } |
