diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 3170b82..329444c 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -28,6 +28,6 @@
     <string name="debug_tool_start_button" msgid="2827965939935983665">"Баштоо"</string>
     <string name="debug_tool_message" msgid="2315979068524074618">"1) жылнааманын дайындар базасын бардык колдонмолордо окулган SD картага/USB сактагычка көчүрүп, 2) электрондук почта аркылуу жөнөткөнү жатасыз. Аны түзмөктөн көчүрүп же электрондук почта аркылуу алаарыңыз менен жок кылууну унутпаңыз."</string>
     <string name="debug_tool_email_sender_picker" msgid="2527150861906694072">"Файлыңызды жөнөтүүчү программаны тандаңыз"</string>
-    <string name="debug_tool_email_subject" msgid="1450453531950410260">"Жылнааманын дайындар базасы тиркелди"</string>
-    <string name="debug_tool_email_body" msgid="1271714905048793618">"Жылнааманын дайындар базасы, анын ичинде бардык жолугушуулар менен жеке маалыматым тиркелди. Этият болуңуз."</string>
+    <string name="debug_tool_email_subject" msgid="1450453531950410260">"Жылнааманын маалыматтар базасы тиркелди"</string>
+    <string name="debug_tool_email_body" msgid="1271714905048793618">"Жылнааманын маалыматтар базасы, анын ичинде бардык жолугушуулар менен жеке маалыматым тиркелди. Этият болуңуз."</string>
 </resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index a37f4e2..a2a5fe2 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -24,10 +24,10 @@
     <string name="calendar_info_events" msgid="6513451584822286165">"Evenimente: <xliff:g id="EVENTS">%1$d</xliff:g>"</string>
     <string name="calendar_info_events_dirty" msgid="3953603148780098018">"Evenimente: <xliff:g id="EVENTS_0">%1$d</xliff:g>. Nesalvate: <xliff:g id="DIRTY_EVENTS">%2$d</xliff:g>"</string>
     <string name="provider_label" msgid="1910026788169486138">"Calendar"</string>
-    <string name="debug_tool_delete_button" msgid="2843837310185088850">"Ștergeți acum"</string>
-    <string name="debug_tool_start_button" msgid="2827965939935983665">"Începeți"</string>
-    <string name="debug_tool_message" msgid="2315979068524074618">"Sunteți pe cale 1) să faceți o copie a bazei de date a calendarului dvs. pe cardul SD / în stocarea USB, care poate fi citită de orice aplicație și 2) să o trimiteți prin e-mail. Nu uitați să ștergeți copia după ce ați copiat-o de pe respectivul dispozitiv sau după primirea e-mailului."</string>
-    <string name="debug_tool_email_sender_picker" msgid="2527150861906694072">"Alegeți un program pentru a trimite fișierul"</string>
+    <string name="debug_tool_delete_button" msgid="2843837310185088850">"Șterge acum"</string>
+    <string name="debug_tool_start_button" msgid="2827965939935983665">"Începe"</string>
+    <string name="debug_tool_message" msgid="2315979068524074618">"Ești pe cale 1) să faci o copie a bazei de date a calendarului tău pe cardul SD / în stocarea USB, care poate fi citită de orice aplicație și 2) să o trimiți prin e-mail. Nu uita să ștergi copia după ce ai copiat-o de pe respectivul dispozitiv sau după primirea e-mailului."</string>
+    <string name="debug_tool_email_sender_picker" msgid="2527150861906694072">"Alege un program pentru a trimite fișierul"</string>
     <string name="debug_tool_email_subject" msgid="1450453531950410260">"Baza de date a calendarului a fost atașată"</string>
-    <string name="debug_tool_email_body" msgid="1271714905048793618">"Găsiți atașată baza de date a calendarului, cu toate întâlnirile și informațiile mele cu caracter personal. Gestionați-o cu atenție."</string>
+    <string name="debug_tool_email_body" msgid="1271714905048793618">"Găsește atașată baza de date a calendarului, cu toate întâlnirile și informațiile mele cu caracter personal. Gestioneaz-o cu atenție."</string>
 </resources>
diff --git a/src/com/android/providers/calendar/CalendarProviderBroadcastReceiver.java b/src/com/android/providers/calendar/CalendarProviderBroadcastReceiver.java
index c27044f..933baf2 100644
--- a/src/com/android/providers/calendar/CalendarProviderBroadcastReceiver.java
+++ b/src/com/android/providers/calendar/CalendarProviderBroadcastReceiver.java
@@ -34,8 +34,9 @@
     @Override
     public void onReceive(Context context, Intent intent) {
         String action = intent.getAction();
-        if (!CalendarAlarmManager.ACTION_CHECK_NEXT_ALARM.equals(action)
-                && !CalendarContract.ACTION_EVENT_REMINDER.equals(action)) {
+        if (action == null ||
+                (!CalendarAlarmManager.ACTION_CHECK_NEXT_ALARM.equals(action)
+                    && !CalendarContract.ACTION_EVENT_REMINDER.equals(action))) {
             Log.e(TAG, "Received invalid intent: " + intent);
             setResultCode(Activity.RESULT_CANCELED);
             return;
@@ -45,15 +46,21 @@
         }
 
         JobWorkItem jwi = new JobWorkItem(intent);
-        JobInfo alarmJob = new JobInfo.Builder(CalendarProviderJobService.JOB_ID,
+        JobInfo.Builder alarmJobBuilder = new JobInfo.Builder(CalendarProviderJobService.JOB_ID,
                 new ComponentName(context, CalendarProviderJobService.class))
-                .setExpedited(true)
-                .build();
+                .setExpedited(true);
         JobScheduler jobScheduler = context.getSystemService(JobScheduler.class);
-        if (jobScheduler.enqueue(alarmJob, jwi) == JobScheduler.RESULT_SUCCESS) {
+        if (jobScheduler.enqueue(alarmJobBuilder.build(), jwi) == JobScheduler.RESULT_SUCCESS) {
             setResultCode(Activity.RESULT_OK);
         } else {
             Slog.wtf(TAG, "Failed to schedule expedited job");
+            // Unable to schedule an expedited job. Fall back to a regular job.
+            alarmJobBuilder.setExpedited(false);
+            if (jobScheduler.enqueue(alarmJobBuilder.build(), jwi) == JobScheduler.RESULT_SUCCESS) {
+                setResultCode(Activity.RESULT_OK);
+            } else {
+                Slog.wtf(TAG, "Failed to schedule regular job");
+            }
         }
     }
 }
diff --git a/src/com/android/providers/calendar/enterprise/CrossProfileCalendarHelper.java b/src/com/android/providers/calendar/enterprise/CrossProfileCalendarHelper.java
index 8c5ace7..8e078e8 100644
--- a/src/com/android/providers/calendar/enterprise/CrossProfileCalendarHelper.java
+++ b/src/com/android/providers/calendar/enterprise/CrossProfileCalendarHelper.java
@@ -164,7 +164,7 @@
                 || CalendarContract.Instances.CONTENT_SEARCH_BY_DAY_URI.equals(localUri)) {
             validColumnsSet = INSTANCES_TABLE_ALLOWED_LIST;
         } else {
-            throw new IllegalArgumentException(String.format("Cross profile version of %d is not "
+            throw new IllegalArgumentException(String.format("Cross profile version of %s is not "
                     + "supported", localUri.toSafeString()));
         }
 
