Запланированные уведомления работают на SDK 28, но не на SDK 23 - PullRequest
0 голосов
/ 11 октября 2019

Мой код отлично работает, например, на телефонах с Android 8+, но телефоны с Android 6 (поддерживаемая мной минимальная версия) не получают никаких уведомлений. Нужно ли обрабатывать уведомления для SDK 23?

Код, который отправляет уведомление ..

public static void sendNotification(Context context,Class<?> cls) {
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        String NOTIFICATION_CHANNEL_ID = "CH1";

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "WeeklyNotification",
                    NotificationManager.IMPORTANCE_HIGH);

            notificationChannel.setDescription("Test");
            notificationChannel.enableLights(true);
            notificationChannel.setLightColor(Color.MAGENTA);
            notificationChannel.setVibrationPattern(new long[]{0, 1000, 500, 1000});
            notificationManager.createNotificationChannel(notificationChannel);
        }
        Intent notificationIntent = new Intent(context, cls);
        notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
        stackBuilder.addParentStack(cls);
        stackBuilder.addNextIntent(notificationIntent);

        PendingIntent pendingIntent = stackBuilder.getPendingIntent(DAILY_CODE, PendingIntent.FLAG_UPDATE_CURRENT);

        NotificationCompat.Builder builder = new NotificationCompat.Builder(context,NOTIFICATION_CHANNEL_ID);

        Notification notification = builder.setContentTitle("TestTitle")
                .setContentText("myContent")
                .setTicker("{myTicker}")
                .setColor(context.getResources().getColor(R.color.colorAccent))
                .setWhen(System.currentTimeMillis())
                .setAutoCancel(true)
                .setSmallIcon(R.drawable.ic_logo)
                .setDefaults(Notification.DEFAULT_ALL)
                .setContentInfo("Info")
                .setContentIntent(pendingIntent).build();


        notificationManager.notify(DAILY_CODE, notification);

    }

my AlarmReciever:

public class AlarmReciever extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    //Trigger the notification
    NotificationService.sendNotification(context, MainActivity.class);
 }

и частькод, который вызывается для настройки расписания

Intent intent1 = new Intent(context, cls);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, DAILY_CODE, intent1, PendingIntent.FLAG_UPDATE_CURRENT);
        AlarmManager am = (AlarmManager) context.getSystemService(ALARM_SERVICE);
        am.setInexactRepeating(AlarmManager.RTC_WAKEUP, setcalendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
...