Уведомления о расписании не работают на некоторых устройствах Android версии 8 и 9 - PullRequest
0 голосов
/ 08 октября 2019

Уведомление не работает на некоторых реальных устройствах Android версий 8 и 9, хотя настройки уведомлений включены, но на эмуляторе работают нормально. Я планирую диспетчер аварийных сигналов для запуска уведомления в это время, используя широковещательный приемник, в котором генерируется уведомление.

private void generateNotification(Context context, String message) {

        NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        createNotificationChannel(notificationManager);
        RemoteViews view = new RemoteViews(context.getPackageName(), R.layout.notification_main);
        view.setImageViewResource(R.id.ImageView1, R.drawable.tenkey_icon);
        view.setTextViewText(R.id.title1, Utils.NOTIFICATION_TITLE);
        view.setTextViewText(R.id.message1, message);
        view.setTextViewText(R.id.time1, notificationTiming);
        Intent notificationIntent = new Intent(context, MainActivity.class);
        notificationIntent.putExtra("content", message);
        notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

        Notification.Builder builder=new Notification.Builder(context)
                .setSmallIcon(R.drawable.ic_launcher)
                .setOngoing(true)
                .setContentIntent(PendingIntent.getActivity(context, 0, notificationIntent, 0))
                .setContent(view);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            builder.setChannelId(CHANNEL_ID);
        }
        Notification notification = builder.build();
        notification.flags |= Notification.FLAG_AUTO_CANCEL;
        notification.defaults |= Notification.DEFAULT_SOUND;
        notification.defaults |= Notification.DEFAULT_VIBRATE;
        notificationManager.notify((int)System.currentTimeMillis() % 1000000, notification);
    }



private void createNotificationChannel(NotificationManager manager) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel serviceChannel = new NotificationChannel(
                    CHANNEL_ID,
                    "Shankaram",
                    NotificationManager.IMPORTANCE_DEFAULT
            );
            manager.createNotificationChannel(serviceChannel);
        }
    }

Как и в эмуляторе, он работает нормально, и у меня нет всех реальных устройств дляпроверить и отладить я застрял в этой точке. Что-нибудь должно быть обработано для диспетчера тревог на пироге Android? Пожалуйста, предложите

Ответы [ 2 ]

0 голосов
/ 09 октября 2019

Я решил эту проблему, тщательно проверив все настройки уведомлений в телефоне и сделав все настройки включенными и, наконец, сработавшими. Изменение кода не было сделано.

0 голосов
/ 08 октября 2019

В Android 8 и выше вы должны использовать Каналы уведомлений

Начиная с Android 8.0 (уровень API 26), все уведомления должны быть назначены каналу или емуне появитсяРаспределяя уведомления по каналам, пользователи могут отключать определенные каналы уведомлений для вашего приложения (вместо отключения всех ваших уведомлений), а пользователи могут управлять визуальными и слуховыми параметрами для каждого канала - все из настроек системы Android (рисунок 11). Пользователи также могут долго нажимать на уведомления, чтобы изменить поведение соответствующего канала.

...