【问题标题】:Notification auto disappear after showing显示后通知自动消失
【发布时间】:2018-07-29 20:23:56
【问题描述】:
public class AlarmReceiver extends BroadcastReceiver {


@Override
public void onReceive(Context context, Intent intent) {


    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);

        intent = new Intent(context, AlertDialog.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); // added new line
        intent.putExtra("STARTED_BY_RECEIVER", true);

        PendingIntent pendingIntent = PendingIntent.getActivity(context, 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        String CHANNEL_ID = "channel id";// The id of the channel.
        CharSequence name = "Channel";
        int importance = NotificationManager.IMPORTANCE_HIGH;
        NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, importance);

        Notification notification = new Notification.Builder(context)
                .setContentIntent(pendingIntent)
                .setContentText("Some Text")
                .setContentTitle("Notification")
                .setAutoCancel(true)
                .setOngoing(true)
                .setSmallIcon(R.drawable.ic_notification_praying)
                .setChannelId(CHANNEL_ID)
                .build();
        notificationManager.createNotificationChannel(mChannel);

        notificationManager.notify(100 , notification);


    } else {
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);

        intent = new Intent(context, AlertDialog.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); // added new line
        intent.putExtra("STARTED_BY_RECEIVER", true);

        PendingIntent pendingIntent = PendingIntent.getActivity(context, 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        NotificationCompat.Builder builder = (NotificationCompat.Builder) new NotificationCompat.Builder(context)
                .setSmallIcon(R.drawable.ic_notification_praying)
                .setContentIntent(pendingIntent)
                .setContentText("Some Text")
                .setContentTitle("Notification")
                .setAutoCancel(true)
                .setOngoing(true);
        Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        builder.setSound(alarmSound);
        notificationManager.notify(100, builder.build());
    }

}

我已经制作了一个应用程序,它会按时显示用户在主要活动中选择的通知,并且只有当用户点击通知时通知才会消失,否则不会..除非我将手机更新为 android Oreo,否则它工作正常( 8.0) 现在通知会在某个时间显示,但一段时间后会自动消失。如何让通知不会自动消失(在 android Oreo 中),但只有当用户点击它时才会消失?

【问题讨论】:

    标签: android notifications broadcastreceiver android-8.0-oreo


    【解决方案1】:

    好吧,我想通了。它是电池优化选项,它正在杀死我的应用程序,这就是为什么通知消失了。我从自动优化中删除了我的应用程序,现在它工作正常。

    【讨论】:

    • 这很奇怪
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    相关资源
    最近更新 更多