diff options
Diffstat (limited to 'java/com/android/dialer')
-rw-r--r-- | java/com/android/dialer/logging/dialer_impression.proto | 10 | ||||
-rw-r--r-- | java/com/android/dialer/spam/promo/SpamBlockingPromoHelper.java | 61 |
2 files changed, 70 insertions, 1 deletions
diff --git a/java/com/android/dialer/logging/dialer_impression.proto b/java/com/android/dialer/logging/dialer_impression.proto index cc65bf9ed..b1d038d35 100644 --- a/java/com/android/dialer/logging/dialer_impression.proto +++ b/java/com/android/dialer/logging/dialer_impression.proto @@ -12,7 +12,7 @@ message DialerImpression { // Event enums to be used for Impression Logging in Dialer. // It's perfectly acceptable for this enum to be large // Values should be from 1000 to 100000. - // Next Tag: 1379 + // Next Tag: 1382 enum Type { UNKNOWN_AOSP_EVENT_TYPE = 1000; @@ -746,5 +746,13 @@ message DialerImpression { LIGHTBRINGER_VIDEO_REQUESTED_FOR_FAVORITE_CONTACT = 1376; LIGHTBRINGER_VIDEO_REQUESTED_FOR_SUGGESTED_CONTACT = 1377; LIGHTBRINGER_VIDEO_REQUESTED_FOR_FAVORITE_CONTACT_DISAMBIG = 1378; + + // Spam blocking after call notification promo shown for user. + SPAM_BLOCKING_AFTER_CALL_NOTIFICATION_PROMO_SHOWN = 1379; + // User enabled spam blocking through after call notification promo. + SPAM_BLOCKING_ENABLED_THROUGH_AFTER_CALL_NOTIFICATION_PROMO = 1380; + // Failure happened while enabling spam blocking through after call + // notification promo. + SPAM_BLOCKING_MODIFY_FAILURE_THROUGH_AFTER_CALL_NOTIFICATION_PROMO = 1381; } } diff --git a/java/com/android/dialer/spam/promo/SpamBlockingPromoHelper.java b/java/com/android/dialer/spam/promo/SpamBlockingPromoHelper.java index b5bdd74b7..891ac44ad 100644 --- a/java/com/android/dialer/spam/promo/SpamBlockingPromoHelper.java +++ b/java/com/android/dialer/spam/promo/SpamBlockingPromoHelper.java @@ -16,16 +16,23 @@ package com.android.dialer.spam.promo; +import android.annotation.SuppressLint; import android.app.FragmentManager; +import android.app.Notification; +import android.app.Notification.Builder; +import android.app.PendingIntent; import android.content.Context; import android.content.DialogInterface.OnDismissListener; import android.preference.PreferenceManager; import android.support.design.widget.Snackbar; +import android.support.v4.os.BuildCompat; import android.view.View; import android.widget.Toast; import com.android.dialer.configprovider.ConfigProviderBindings; import com.android.dialer.logging.DialerImpression; import com.android.dialer.logging.Logger; +import com.android.dialer.notification.DialerNotificationManager; +import com.android.dialer.notification.NotificationChannelId; import com.android.dialer.spam.SpamSettings; import com.android.dialer.spam.SpamSettings.ModifySettingListener; @@ -139,4 +146,58 @@ public class SpamBlockingPromoHelper { : context.getString(R.string.spam_blocking_settings_enable_error_text); Toast.makeText(context, toastText, Toast.LENGTH_LONG).show(); } + + /** + * Shows a spam blocking promo notification. + * + * @param notificationTag a string identifier for this notification. + * @param notificationId an identifier for this notification. + * @param contentIntent pending intent to be sent when notification is clicked. + * @param actionIntent pending intent to be sent when enable-spam-blocking button is clicked. + */ + public void showSpamBlockingPromoNotification( + String notificationTag, + int notificationId, + PendingIntent contentIntent, + PendingIntent actionIntent) { + updateLastShowSpamTimestamp(); + Logger.get(context) + .logImpression(DialerImpression.Type.SPAM_BLOCKING_AFTER_CALL_NOTIFICATION_PROMO_SHOWN); + DialerNotificationManager.notify( + context, + notificationTag, + notificationId, + getSpamBlockingPromoNotification(contentIntent, actionIntent)); + } + + /** + * Builds a spam blocking promo notification with given intents. + * + * @param contentIntent pending intent to be sent when notification is clicked. + * @param actionIntent pending intent to be sent when enable-spam-blocking button is clicked. + */ + @SuppressLint("NewApi") + private Notification getSpamBlockingPromoNotification( + PendingIntent contentIntent, PendingIntent actionIntent) { + Notification.Builder builder = + new Builder(context) + .setContentIntent(contentIntent) + .setCategory(Notification.CATEGORY_STATUS) + .setPriority(Notification.PRIORITY_DEFAULT) + .setColor(context.getColor(R.color.dialer_theme_color)) + .setSmallIcon(R.drawable.quantum_ic_call_vd_theme_24) + .setContentText(context.getString(R.string.spam_blocking_promo_text)) + .addAction( + new Notification.Action.Builder( + R.drawable.quantum_ic_block_vd_theme_24, + context.getString(R.string.spam_blocking_promo_action_filter_spam), + actionIntent) + .build()) + .setContentTitle(context.getString(R.string.spam_blocking_promo_title)); + + if (BuildCompat.isAtLeastO()) { + builder.setChannelId(NotificationChannelId.DEFAULT); + } + return builder.build(); + } } |