Wednesday, 17 March 2021

Android notification setFullScreenIntent action button unwanted border on Android 11

When showing notifications on Android 11 having setFullScreenIntent, action button in the notification gets an annoying border:

Notification on Android 11

While running same code on Android 10 or when removing setFullScreenIntent on Android 11, notification design will be material as intended:

Notification on Android 10 or without setFullScreenIntent

My code for reference:

    private void showNotification() {
        NotificationManager androidNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        createHeadsUpNotificationChannel(androidNotificationManager);

        RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.layout_sample_notif);
        contentView.setTextViewText(R.id.id1, "Header");
        contentView.setTextViewText(R.id.id2, "Body");

        NotificationCompat.Builder builder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL);
        builder.setVisibility(Notification.VISIBILITY_PUBLIC)
            .setContentTitle("Sample Notification")
            .setSmallIcon(R.drawable.sample_icon)
            .setStyle(new NotificationCompat.DecoratedCustomViewStyle())
            .setCustomContentView(contentView)
            .setGroup(GROUP_KEY)
            .setCategory(NotificationCompat.CATEGORY_ALARM).setPriority(NotificationCompat.PRIORITY_HIGH)
            .setDefaults(NotificationCompat.DEFAULT_ALL);

        Intent fullScreenIntent = new Intent(this, FullscreenActivity.class);
        fullScreenIntent.setAction(String.valueOf(System.currentTimeMillis()));
        fullScreenIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        PendingIntent fullScreenPendingIntent = PendingIntent.getActivity(this, 0,
            fullScreenIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        builder.setFullScreenIntent(fullScreenPendingIntent, true);

        Intent dismissIntent = new Intent(this, MyService.class);
        dismissIntent.setAction("action_dismiss");
        builder.setOngoing(true)
            .addAction(R.drawable.sample_icon,
                "Dismiss",
                PendingIntent.getService(this, 0, dismissIntent, PendingIntent.FLAG_ONE_SHOT));

        androidNotificationManager.notify(0, builder.build());
    }

    private void createHeadsUpNotificationChannel(NotificationManager androidNotificationManager) {
        NotificationChannel channel = new NotificationChannel(NOTIFICATION_CHANNEL,
            "Sample Channel",
            NotificationManager.IMPORTANCE_HIGH);
        channel.setDescription("Sample Desc");
        channel.enableLights(false);
        channel.enableVibration(false);
        androidNotificationManager.createNotificationChannel(channel);
    }
}

I need help having a consistent material design for my notification.



from Android notification setFullScreenIntent action button unwanted border on Android 11

No comments:

Post a Comment