From 224822ecafdf09a3a2cda11d95645f3056ab58dc Mon Sep 17 00:00:00 2001 From: Varun Shah Date: Tue, 29 Dec 2020 15:24:43 -0800 Subject: [PATCH] Disable StrictMode VM Policy check. Disable the VM policy violation for intents that contain a content URI but don't have FLAG_GRANT_URI_PERMISSION when scheduling alarms. Fixes: 160426113 Test: atest CalendarProvider2Test Change-Id: If6e4a03609fc3d03dde66bcaa3136b23662ccaeb --- core/java/android/provider/CalendarContract.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/java/android/provider/CalendarContract.java b/core/java/android/provider/CalendarContract.java index 1ee2f19038dbc..92a18836653af 100644 --- a/core/java/android/provider/CalendarContract.java +++ b/core/java/android/provider/CalendarContract.java @@ -40,6 +40,7 @@ import android.database.DatabaseUtils; import android.net.Uri; import android.os.Build; import android.os.RemoteException; +import android.os.StrictMode; import android.text.format.DateUtils; import android.text.format.TimeMigrationUtils; import android.util.Log; @@ -2619,8 +2620,14 @@ public final class CalendarContract { intent.setData(ContentUris.withAppendedId(CalendarContract.CONTENT_URI, alarmTime)); intent.putExtra(ALARM_TIME, alarmTime); intent.setFlags(Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND); + + // Disable strict mode VM policy violations temporarily for intents that contain a + // content URI but don't have FLAG_GRANT_READ_URI_PERMISSION. + StrictMode.VmPolicy oldVmPolicy = StrictMode.allowVmViolations(); PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_IMMUTABLE); + StrictMode.setVmPolicy(oldVmPolicy); + manager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, alarmTime, pi); }