From fad72cb55b81ecdb7829bd57c94ede6065b8186e Mon Sep 17 00:00:00 2001 From: Hall Liu Date: Tue, 10 Oct 2017 19:08:24 -0700 Subject: [PATCH] Fix URI unparceling and clarify an error condition Use the proper unparceling method for lists, add a more verbose exception for when the app fails to declare a critical piece of metadata. Change-Id: I29d5291d7b88476496334d268be94f7f8c08255c Fixes: 67640653 Test: manual, with testapp --- .../android/telephony/mbms/MbmsDownloadReceiver.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/telephony/java/android/telephony/mbms/MbmsDownloadReceiver.java b/telephony/java/android/telephony/mbms/MbmsDownloadReceiver.java index ac196b5359ae2..5523f7177069d 100644 --- a/telephony/java/android/telephony/mbms/MbmsDownloadReceiver.java +++ b/telephony/java/android/telephony/mbms/MbmsDownloadReceiver.java @@ -288,7 +288,7 @@ public class MbmsDownloadReceiver extends BroadcastReceiver { return; } - List tempFiles = intent.getParcelableExtra(VendorUtils.EXTRA_TEMP_LIST); + List tempFiles = intent.getParcelableArrayListExtra(VendorUtils.EXTRA_TEMP_LIST); if (tempFiles == null) { return; } @@ -310,7 +310,7 @@ public class MbmsDownloadReceiver extends BroadcastReceiver { return; } int fdCount = intent.getIntExtra(VendorUtils.EXTRA_FD_COUNT, 0); - List pausedList = intent.getParcelableExtra(VendorUtils.EXTRA_PAUSED_LIST); + List pausedList = intent.getParcelableArrayListExtra(VendorUtils.EXTRA_PAUSED_LIST); if (fdCount == 0 && (pausedList == null || pausedList.size() == 0)) { Log.i(LOG_TAG, "No temp files actually requested. Ending."); @@ -493,9 +493,14 @@ public class MbmsDownloadReceiver extends BroadcastReceiver { } catch (PackageManager.NameNotFoundException e) { throw new RuntimeException("Package manager couldn't find " + context.getPackageName()); } + if (appInfo.metaData == null) { + throw new RuntimeException("App must declare the file provider authority as metadata " + + "in the manifest."); + } String authority = appInfo.metaData.getString(MBMS_FILE_PROVIDER_META_DATA_KEY); if (authority == null) { - throw new RuntimeException("Must declare the file provider authority as meta data"); + throw new RuntimeException("App must declare the file provider authority as metadata " + + "in the manifest."); } return authority; }