From d5059539e839b7bd1e9c62bbc0181444b38a6751 Mon Sep 17 00:00:00 2001 From: Ji Yang Date: Wed, 18 May 2016 13:03:01 -0700 Subject: Remove the system new message notification automatically. The notification is removed after user-unlock. It's no longer needed at that point because the messaging app will show its own notification. BUG: 28791378 Change-Id: I49f942e565cb8b830c763305483590323ba21e4b --- .../com/android/internal/telephony/InboundSmsHandler.java | 9 +++++++++ .../internal/telephony/SmsBroadcastUndelivered.java | 15 ++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) (limited to 'src/java/com/android/internal/telephony') diff --git a/src/java/com/android/internal/telephony/InboundSmsHandler.java b/src/java/com/android/internal/telephony/InboundSmsHandler.java index 43790bfe9..17f58d855 100644 --- a/src/java/com/android/internal/telephony/InboundSmsHandler.java +++ b/src/java/com/android/internal/telephony/InboundSmsHandler.java @@ -58,6 +58,7 @@ import android.service.carrier.CarrierMessagingService; import android.service.carrier.ICarrierMessagingCallback; import android.service.carrier.ICarrierMessagingService; import android.service.carrier.MessagePdu; +import android.service.notification.StatusBarNotification; import android.telephony.CarrierMessagingServiceManager; import android.telephony.Rlog; import android.telephony.SmsManager; @@ -864,6 +865,7 @@ public abstract class InboundSmsHandler extends StateMachine { Notification.Builder mBuilder = new Notification.Builder(mContext) .setSmallIcon(com.android.internal.R.drawable.sym_action_chat) .setAutoCancel(true) + .setVisibility(Notification.VISIBILITY_PUBLIC) .setDefaults(Notification.DEFAULT_ALL) .setContentTitle(mContext.getString(R.string.new_sms_notification_title)) .setContentText(mContext.getString(R.string.new_sms_notification_content)) @@ -874,6 +876,13 @@ public abstract class InboundSmsHandler extends StateMachine { NOTIFICATION_TAG, NOTIFICATION_ID_NEW_MESSAGE, mBuilder.build()); } + static void cancelNewMessageNotification(Context context) { + NotificationManager mNotificationManager = + (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); + mNotificationManager.cancel(InboundSmsHandler.NOTIFICATION_TAG, + InboundSmsHandler.NOTIFICATION_ID_NEW_MESSAGE); + } + /** * Filters the SMS with carrier or system app. * @return true if the carrier or system app is invoked, false otherwise. diff --git a/src/java/com/android/internal/telephony/SmsBroadcastUndelivered.java b/src/java/com/android/internal/telephony/SmsBroadcastUndelivered.java index 51f8425ac..57299fe06 100644 --- a/src/java/com/android/internal/telephony/SmsBroadcastUndelivered.java +++ b/src/java/com/android/internal/telephony/SmsBroadcastUndelivered.java @@ -23,10 +23,8 @@ import android.content.Intent; import android.content.IntentFilter; import android.database.Cursor; import android.database.SQLException; -import android.net.Uri; import android.os.UserHandle; import android.os.UserManager; -import android.provider.Telephony; import android.telephony.Rlog; import com.android.internal.telephony.cdma.CdmaInboundSmsHandler; @@ -81,18 +79,25 @@ public class SmsBroadcastUndelivered { */ private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { @Override - public void onReceive(Context context, Intent intent) { + public void onReceive(final Context context, Intent intent) { Rlog.d(TAG, "Received broadcast " + intent.getAction()); if (Intent.ACTION_USER_UNLOCKED.equals(intent.getAction())) { - new ScanRawTableThread().start(); + new ScanRawTableThread(context).start(); } } }; private class ScanRawTableThread extends Thread { + private final Context context; + + private ScanRawTableThread(Context context) { + this.context = context; + } + @Override public void run() { scanRawTable(); + InboundSmsHandler.cancelNewMessageNotification(context); } } @@ -123,7 +128,7 @@ public class SmsBroadcastUndelivered { UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE); if (userManager.isUserUnlocked()) { - new ScanRawTableThread().start(); + new ScanRawTableThread(context).start(); } else { IntentFilter userFilter = new IntentFilter(); userFilter.addAction(Intent.ACTION_USER_UNLOCKED); -- cgit v1.2.3