diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 4adf6e7..d44ae6e 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -16,8 +16,8 @@
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="com.android.contacts"
-          android:versionCode="10707"
-          android:versionName="1.7.7">
+          android:versionCode="10708"
+          android:versionName="1.7.8">
 
     <uses-sdk
         android:minSdkVersion="21"
@@ -74,7 +74,7 @@
             android:alwaysRetainTaskState="true"
             android:launchMode="singleTop"
             android:resizeableActivity="true"
-            android:theme="@style/PeopleActivityTheme"
+            android:theme="@style/LaunchScreenTheme"
             >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
@@ -334,6 +334,15 @@
             android:name=".quickcontact.QuickContactBroadcastReceiver"
             android:exported="false"/>
 
+        <!-- Responsible for creating notification channels when boot is completed or when app is
+        re-installed -->
+        <receiver android:name=".interactions.OnBootOrUpgradeReceiver">
+            <intent-filter>
+                <action android:name="android.intent.action.BOOT_COMPLETED" />
+                <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
+            </intent-filter>
+        </receiver>
+
         <activity-alias
             android:name="ContactShortcut"
             android:icon="@drawable/logo_quick_contacts_color_44in48dp"
diff --git a/res/drawable-hdpi/googlelogo_dark20_color_132x44.png b/res/drawable-hdpi/googlelogo_dark20_color_132x44.png
new file mode 100644
index 0000000..078c8a8
--- /dev/null
+++ b/res/drawable-hdpi/googlelogo_dark20_color_132x44.png
Binary files differ
diff --git a/res/drawable-hdpi/googlelogo_dark20_color_184x60.png b/res/drawable-hdpi/googlelogo_dark20_color_184x60.png
new file mode 100644
index 0000000..9d25e3d
--- /dev/null
+++ b/res/drawable-hdpi/googlelogo_dark20_color_184x60.png
Binary files differ
diff --git a/res/drawable-hdpi/product_logo_contacts_color_144.png b/res/drawable-hdpi/product_logo_contacts_color_144.png
new file mode 100644
index 0000000..d26a363
--- /dev/null
+++ b/res/drawable-hdpi/product_logo_contacts_color_144.png
Binary files differ
diff --git a/res/drawable-hdpi/product_logo_contacts_color_192.png b/res/drawable-hdpi/product_logo_contacts_color_192.png
new file mode 100644
index 0000000..ebd8a8b
--- /dev/null
+++ b/res/drawable-hdpi/product_logo_contacts_color_192.png
Binary files differ
diff --git a/res/drawable-mdpi/googlelogo_dark20_color_132x44.png b/res/drawable-mdpi/googlelogo_dark20_color_132x44.png
new file mode 100644
index 0000000..a045dab
--- /dev/null
+++ b/res/drawable-mdpi/googlelogo_dark20_color_132x44.png
Binary files differ
diff --git a/res/drawable-mdpi/googlelogo_dark20_color_184x60.png b/res/drawable-mdpi/googlelogo_dark20_color_184x60.png
new file mode 100644
index 0000000..d1181a9
--- /dev/null
+++ b/res/drawable-mdpi/googlelogo_dark20_color_184x60.png
Binary files differ
diff --git a/res/drawable-mdpi/product_logo_contacts_color_144.png b/res/drawable-mdpi/product_logo_contacts_color_144.png
new file mode 100644
index 0000000..e28097c
--- /dev/null
+++ b/res/drawable-mdpi/product_logo_contacts_color_144.png
Binary files differ
diff --git a/res/drawable-mdpi/product_logo_contacts_color_192.png b/res/drawable-mdpi/product_logo_contacts_color_192.png
new file mode 100644
index 0000000..a8fcbf0
--- /dev/null
+++ b/res/drawable-mdpi/product_logo_contacts_color_192.png
Binary files differ
diff --git a/res/drawable-sw600dp/quantum_launchscreen_contacts.xml b/res/drawable-sw600dp/quantum_launchscreen_contacts.xml
new file mode 100755
index 0000000..5cc35d5
--- /dev/null
+++ b/res/drawable-sw600dp/quantum_launchscreen_contacts.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
+    android:opacity="opaque">
+    <item android:drawable="@android:color/white" />
+    <item
+        android:id="@+id/launchscreens_product_logo"
+        android:bottom="@dimen/launchscreens_product_logo_bottom">
+        <bitmap
+            android:gravity="center"
+            android:src="@drawable/product_logo_contacts_color_192" />
+    </item>
+    <item
+        android:id="@+id/launchscreens_logo_text"
+        android:bottom="@dimen/launchscreens_google_logo_bottom">
+        <bitmap
+            android:gravity="center_horizontal|bottom"
+            android:src="@drawable/googlelogo_dark20_color_184x60" />
+    </item>
+</layer-list>
diff --git a/res/drawable-xhdpi/googlelogo_dark20_color_132x44.png b/res/drawable-xhdpi/googlelogo_dark20_color_132x44.png
new file mode 100644
index 0000000..437f083
--- /dev/null
+++ b/res/drawable-xhdpi/googlelogo_dark20_color_132x44.png
Binary files differ
diff --git a/res/drawable-xhdpi/googlelogo_dark20_color_184x60.png b/res/drawable-xhdpi/googlelogo_dark20_color_184x60.png
new file mode 100644
index 0000000..2bd813f
--- /dev/null
+++ b/res/drawable-xhdpi/googlelogo_dark20_color_184x60.png
Binary files differ
diff --git a/res/drawable-xhdpi/product_logo_contacts_color_144.png b/res/drawable-xhdpi/product_logo_contacts_color_144.png
new file mode 100644
index 0000000..ebd8a8b
--- /dev/null
+++ b/res/drawable-xhdpi/product_logo_contacts_color_144.png
Binary files differ
diff --git a/res/drawable-xhdpi/product_logo_contacts_color_192.png b/res/drawable-xhdpi/product_logo_contacts_color_192.png
new file mode 100644
index 0000000..690bbd0
--- /dev/null
+++ b/res/drawable-xhdpi/product_logo_contacts_color_192.png
Binary files differ
diff --git a/res/drawable-xxhdpi/googlelogo_dark20_color_132x44.png b/res/drawable-xxhdpi/googlelogo_dark20_color_132x44.png
new file mode 100644
index 0000000..b22fba6
--- /dev/null
+++ b/res/drawable-xxhdpi/googlelogo_dark20_color_132x44.png
Binary files differ
diff --git a/res/drawable-xxhdpi/googlelogo_dark20_color_184x60.png b/res/drawable-xxhdpi/googlelogo_dark20_color_184x60.png
new file mode 100644
index 0000000..6e4193e
--- /dev/null
+++ b/res/drawable-xxhdpi/googlelogo_dark20_color_184x60.png
Binary files differ
diff --git a/res/drawable-xxhdpi/product_logo_contacts_color_144.png b/res/drawable-xxhdpi/product_logo_contacts_color_144.png
new file mode 100644
index 0000000..8ff6a14
--- /dev/null
+++ b/res/drawable-xxhdpi/product_logo_contacts_color_144.png
Binary files differ
diff --git a/res/drawable-xxhdpi/product_logo_contacts_color_192.png b/res/drawable-xxhdpi/product_logo_contacts_color_192.png
new file mode 100644
index 0000000..c32d9cd
--- /dev/null
+++ b/res/drawable-xxhdpi/product_logo_contacts_color_192.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/googlelogo_dark20_color_132x44.png b/res/drawable-xxxhdpi/googlelogo_dark20_color_132x44.png
new file mode 100644
index 0000000..7372b47
--- /dev/null
+++ b/res/drawable-xxxhdpi/googlelogo_dark20_color_132x44.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/googlelogo_dark20_color_184x60.png b/res/drawable-xxxhdpi/googlelogo_dark20_color_184x60.png
new file mode 100644
index 0000000..60de38b
--- /dev/null
+++ b/res/drawable-xxxhdpi/googlelogo_dark20_color_184x60.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/product_logo_contacts_color_144.png b/res/drawable-xxxhdpi/product_logo_contacts_color_144.png
new file mode 100644
index 0000000..c32d9cd
--- /dev/null
+++ b/res/drawable-xxxhdpi/product_logo_contacts_color_144.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/product_logo_contacts_color_192.png b/res/drawable-xxxhdpi/product_logo_contacts_color_192.png
new file mode 100644
index 0000000..1346cbc
--- /dev/null
+++ b/res/drawable-xxxhdpi/product_logo_contacts_color_192.png
Binary files differ
diff --git a/res/drawable/quantum_launchscreen_contacts.xml b/res/drawable/quantum_launchscreen_contacts.xml
new file mode 100755
index 0000000..1995899
--- /dev/null
+++ b/res/drawable/quantum_launchscreen_contacts.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
+    android:opacity="opaque">
+  <item android:drawable="@android:color/white" />
+  <item
+      android:id="@+id/launchscreens_product_logo"
+      android:bottom="@dimen/launchscreens_product_logo_bottom">
+    <bitmap
+        android:gravity="center"
+        android:src="@drawable/product_logo_contacts_color_144" />
+  </item>
+  <item
+      android:id="@+id/launchscreens_logo_text"
+      android:bottom="@dimen/launchscreens_google_logo_bottom">
+    <bitmap
+        android:gravity="center_horizontal|bottom"
+        android:src="@drawable/googlelogo_dark20_color_132x44" />
+  </item>
+</layer-list>
diff --git a/res/layout/contact_list_card.xml b/res/layout/contact_list_card.xml
index c20dbe7..c2b66a4 100644
--- a/res/layout/contact_list_card.xml
+++ b/res/layout/contact_list_card.xml
@@ -24,4 +24,4 @@
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:background="@color/contact_all_list_background_color"/>
-</LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/res/values-land/dimens.xml b/res/values-land/dimens.xml
index 64b87e9..067f88c 100644
--- a/res/values-land/dimens.xml
+++ b/res/values-land/dimens.xml
@@ -14,6 +14,10 @@
      limitations under the License.
 -->
 <resources>
+    <!-- Copied from java/com/google/android/assets/launchscreens/res/values-land/dimens.xml -->
+    <!-- Adjusted higher to deal with the smaller total height we have to deal with on phones -->
+    <dimen name="launchscreens_product_logo_bottom">48dp</dimen>
+
     <dimen name="editor_type_label_width">120dip</dimen>
 
     <!-- Top padding for the image for empty group view-->
diff --git a/res/values-sw600dp-land/dimens.xml b/res/values-sw600dp-land/dimens.xml
index f978596..7d9eb33 100644
--- a/res/values-sw600dp-land/dimens.xml
+++ b/res/values-sw600dp-land/dimens.xml
@@ -14,6 +14,11 @@
      limitations under the License.
 -->
 <resources>
+    <!-- Copied from java/com/google/android/assets/launchscreens/res/values-sw600dp-land-v21/dimens.xml -->
+    <!-- Values adjusted for nav bar size due to windowDrawsSystemBarBackgrounds -->
+    <dimen name="launchscreens_product_logo_bottom">72dp</dimen>
+    <dimen name="launchscreens_google_logo_bottom">96dp</dimen>
+
     <!-- Height for the image for empty group view-->
     <dimen name="empty_view_image_height">180dp</dimen>
 
diff --git a/res/values-sw600dp/dimens.xml b/res/values-sw600dp/dimens.xml
index 7753d7d..a38364c 100644
--- a/res/values-sw600dp/dimens.xml
+++ b/res/values-sw600dp/dimens.xml
@@ -14,6 +14,11 @@
      limitations under the License.
 -->
 <resources>
+    <!-- Copied from java/com/google/android/assets/launchscreens/res/values-sw600dp-port-v21/dimens.xml -->
+    <!-- Values adjusted for nav bar size due to windowDrawsSystemBarBackgrounds -->
+    <dimen name="launchscreens_product_logo_bottom">72dp</dimen>
+    <dimen name="launchscreens_google_logo_bottom">96dp</dimen>
+
     <dimen name="editor_type_label_width">122dip</dimen>
     <dimen name="shortcut_icon_size">64dip</dimen>
     <dimen name="contact_browser_list_item_text_size">18sp</dimen>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index a117ca3..e9fe2ad 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -14,6 +14,11 @@
      limitations under the License.
 -->
 <resources>
+    <!-- Copied from java/com/google/android/assets/launchscreens/res/values-port-v21/dimens.xml -->
+    <!-- Values adjusted for nav bar size due to windowDrawsSystemBarBackgrounds -->
+    <dimen name="launchscreens_product_logo_bottom">64dp</dimen>
+    <dimen name="launchscreens_google_logo_bottom">104dp</dimen>
+
     <!-- Initial height of transparent space above QuickContacts -->
     <dimen name="quickcontact_starting_empty_height">150dp</dimen>
     <!-- Initial size of QuickContact's title size -->
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 538336c..1ea9708 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1583,4 +1583,7 @@
     <!-- The notification title shown while SIM contacts are being imported [CHAR LIMIT=40] -->
     <string name="importing_sim_in_progress_title">Importing SIM</string>
 
+    <!-- Text shown when viewing channel settings for default Contacts notifications [CHAR LIMIT=50] -->
+    <string name="contacts_default_notification_channel">Notifications</string>
+
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 50971b0..4c78136 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -89,6 +89,13 @@
         <item name="android:popupMenuStyle">@style/PopupMenuStyle</item>
     </style>
 
+    <style name="LaunchScreenTheme" parent="Theme.AppCompat.Light.DarkActionBar">
+        <item name="android:windowBackground">@drawable/quantum_launchscreen_contacts</item>
+        <!-- Ensure the status bar color matches the background (grey 500) -->
+        <!-- TODO(yaolu): Switch to use quantum_grey if in Google3 -->
+        <item name="android:colorPrimaryDark">#9e9e9e</item>
+    </style>
+
     <style name="PeopleActivityTheme" parent="@style/PeopleThemeAppCompat">
         <item name="windowActionBar">false</item>
         <item name="windowNoTitle">true</item>
@@ -585,5 +592,4 @@
         <item name="android:paddingStart">@dimen/drawer_side_padding</item>
         <item name="android:paddingEnd">@dimen/drawer_label_header_end_padding</item>
     </style>
-
 </resources>
diff --git a/src/com/android/contacts/SimImportService.java b/src/com/android/contacts/SimImportService.java
index f21e1e1..4d4f551 100644
--- a/src/com/android/contacts/SimImportService.java
+++ b/src/com/android/contacts/SimImportService.java
@@ -35,6 +35,7 @@
 import com.android.contacts.model.SimCard;
 import com.android.contacts.model.SimContact;
 import com.android.contacts.model.account.AccountWithDataSet;
+import com.android.contacts.util.ContactsNotificationChannelsUtil;
 import com.android.contactsbind.FeedbackHelper;
 
 import java.util.ArrayList;
@@ -189,6 +190,7 @@
         final Intent intent = new Intent(this, PeopleActivity.class);
         final NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
         builder.setOngoing(false)
+                .setChannel(ContactsNotificationChannelsUtil.DEFAULT_CHANNEL)
                 .setAutoCancel(true)
                 .setContentTitle(this.getString(R.string.importing_sim_finished_title))
                 .setColor(this.getResources().getColor(R.color.dialtacts_theme_color))
@@ -201,6 +203,7 @@
         final Intent intent = new Intent(this, PeopleActivity.class);
         final NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
         builder.setOngoing(false)
+                .setChannel(ContactsNotificationChannelsUtil.DEFAULT_CHANNEL)
                 .setAutoCancel(true)
                 .setContentTitle(this.getString(R.string.importing_sim_failed_title))
                 .setContentText(this.getString(R.string.importing_sim_failed_message))
@@ -214,6 +217,7 @@
         final NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
         final String description = getString(R.string.importing_sim_in_progress_title);
         builder.setOngoing(true)
+                .setChannel(ContactsNotificationChannelsUtil.DEFAULT_CHANNEL)
                 .setProgress(/* current */ 0, /* max */ 100, /* indeterminate */ true)
                 .setContentTitle(description)
                 .setColor(this.getResources().getColor(R.color.dialtacts_theme_color))
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index e5ae3a3..00b2810 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -345,7 +345,11 @@
         if (Log.isLoggable(Constants.PERFORMANCE_TAG, Log.DEBUG)) {
             Log.d(Constants.PERFORMANCE_TAG, "PeopleActivity.onCreate start");
         }
+
+        // Make sure this is *before* calling super.onCreate
+        setTheme(R.style.PeopleActivityTheme);
         super.onCreate(savedState);
+
         mAccountTypeManager = AccountTypeManager.getInstance(this);
         mContactListFilterController = ContactListFilterController.getInstance(this);
 
diff --git a/src/com/android/contacts/interactions/OnBootOrUpgradeReceiver.java b/src/com/android/contacts/interactions/OnBootOrUpgradeReceiver.java
new file mode 100644
index 0000000..5c55f20
--- /dev/null
+++ b/src/com/android/contacts/interactions/OnBootOrUpgradeReceiver.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.contacts.interactions;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+import com.android.contacts.util.ContactsNotificationChannelsUtil;
+
+public class OnBootOrUpgradeReceiver extends BroadcastReceiver {
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        final String action = intent.getAction();
+        if (Intent.ACTION_BOOT_COMPLETED.equals(action)
+                || Intent.ACTION_MY_PACKAGE_REPLACED.equals(action)) {
+            ContactsNotificationChannelsUtil.createDefaultChannel(context);
+        }
+    }
+}
diff --git a/src/com/android/contacts/util/ContactsNotificationChannelsUtil.java b/src/com/android/contacts/util/ContactsNotificationChannelsUtil.java
new file mode 100644
index 0000000..3aa75c9
--- /dev/null
+++ b/src/com/android/contacts/util/ContactsNotificationChannelsUtil.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.contacts.util;
+
+import android.annotation.TargetApi;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.content.Context;
+import android.os.Build;
+import android.support.v4.os.BuildCompat;
+
+import com.android.contacts.R;
+
+@TargetApi(Build.VERSION_CODES.O)
+public class ContactsNotificationChannelsUtil {
+    public static String DEFAULT_CHANNEL = "DEFAULT_CHANNEL";
+
+    private ContactsNotificationChannelsUtil() {}
+
+    public static void createDefaultChannel(Context context) {
+        if (!BuildCompat.isAtLeastO()) {
+            return;
+        }
+        final NotificationManager nm = context.getSystemService(NotificationManager.class);
+        final NotificationChannel channel = new NotificationChannel(DEFAULT_CHANNEL,
+                context.getString(R.string.contacts_default_notification_channel),
+                NotificationManager.IMPORTANCE_DEFAULT);
+        nm.createNotificationChannel(channel);
+    }
+}
diff --git a/src/com/android/contacts/vcard/NotificationImportExportListener.java b/src/com/android/contacts/vcard/NotificationImportExportListener.java
index cf815bc..f4d682c 100644
--- a/src/com/android/contacts/vcard/NotificationImportExportListener.java
+++ b/src/com/android/contacts/vcard/NotificationImportExportListener.java
@@ -32,6 +32,7 @@
 import android.widget.Toast;
 
 import com.android.contacts.R;
+import com.android.contacts.util.ContactsNotificationChannelsUtil;
 import com.android.vcard.VCardEntry;
 
 import java.text.NumberFormat;
@@ -221,6 +222,7 @@
 
         final NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
         builder.setOngoing(true)
+                .setChannel(ContactsNotificationChannelsUtil.DEFAULT_CHANNEL)
                 .setProgress(totalCount, currentCount, totalCount == - 1)
                 .setTicker(tickerText)
                 .setContentTitle(description)
@@ -246,6 +248,7 @@
     /* package */ static Notification constructCancelNotification(
             Context context, String description) {
         return new NotificationCompat.Builder(context)
+                .setChannel(ContactsNotificationChannelsUtil.DEFAULT_CHANNEL)
                 .setAutoCancel(true)
                 .setSmallIcon(android.R.drawable.stat_notify_error)
                 .setColor(context.getResources().getColor(R.color.dialtacts_theme_color))
@@ -276,6 +279,7 @@
     /* package */ static Notification constructFinishNotificationWithFlags(
             Context context, String title, String description, Intent intent, int flags) {
         return new NotificationCompat.Builder(context)
+                .setChannel(ContactsNotificationChannelsUtil.DEFAULT_CHANNEL)
                 .setAutoCancel(true)
                 .setColor(context.getResources().getColor(R.color.dialtacts_theme_color))
                 .setSmallIcon(R.drawable.quantum_ic_done_vd_theme_24)
@@ -299,6 +303,7 @@
     /* package */ static Notification constructImportFailureNotification(
             Context context, String reason) {
         return new NotificationCompat.Builder(context)
+                .setChannel(ContactsNotificationChannelsUtil.DEFAULT_CHANNEL)
                 .setAutoCancel(true)
                 .setColor(context.getResources().getColor(R.color.dialtacts_theme_color))
                 .setSmallIcon(android.R.drawable.stat_notify_error)
