постоянное уведомление не показывает - PullRequest
0 голосов
/ 26 мая 2019

Я отправил свое приложение в конце 2017 года в игровой магазин, и оно заработало. Затем он был построен в Eclipse.

Теперь я запускаю его в Android Studio, и тот же код не показывает никаких уведомлений. Это постоянное уведомление, которое появляется после вызова метода приложения finish(). (почему я так поступаю: посмотрите внизу, хотите ли вы знать).

Итак, я посмотрел на все примеры и ни на одну из работ. Ни одного уведомления не отображается.

Итак, я запускаю действие, и в действии я показываю уведомление. Тогда я звоню finish().

Это мой код:

Intent intent = new Intent(this, MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
                intent, 0);

        CharSequence connectedPart = getResources().getString(R.string.app_name);

        String melding = "";

        melding = getResources().getString(R.string.screentimeoutsetto) + " "  + newTimeString + ".";
        NotificationManager notificationManager = (NotificationManager) this
                .getSystemService(Context.NOTIFICATION_SERVICE);

        Notification notification = new Notification.Builder(this)
                .setContentTitle(connectedPart)
                .setTicker(connectedPart)
                .setContentText(melding)
                .setSmallIcon(R.drawable.ic_stat_name)
                .setContentIntent(pendingIntent)
                .setOngoing(true)
                .build();
        notification.flags |= Notification.FLAG_ONGOING_EVENT;
        notification.flags |= Notification.FLAG_NO_CLEAR;
        notificationManager.notify(2, notification);

зависимость:

dependencies{
    implementation "com.android.support:support-compat:26.1.0"
}

Почему я это делаю: Мое приложение выполняет одну вещь: переключает время ожидания экрана. Поэтому, когда вы запускаете его, он устанавливает время ожидания на 30 минут (запускается, устанавливает уведомление, затем finish()). Запустите снова, он удалит уведомление и восстановит исходное значение для тайм-аута экрана.

Ответы [ 2 ]

1 голос
/ 26 мая 2019

Теперь, начиная с Android 8.0 и выше, вам нужно создать канал уведомлений, прежде чем показывать уведомления. Вот ссылка на Документы

https://developer.android.com/training/notify-user/channels

1 голос
/ 26 мая 2019

Начиная с Android Oreo, для всех уведомлений требуется канал уведомлений, в противном случае уведомление не будет опубликовано, и в вашем logcat появится сообщение об ошибке. Вот пример того, как вы можете это сделать, взятый из одного из моих приложений:

private static void createNotificationChannel(Context ctx) {
    if(SDK_INT < O) return;

    final NotificationManager mgr = ctx.getSystemService(NotificationManager.class);
    if(mgr == null) return;

    final String name = ctx.getString(R.string.channel_name);
    if(mgr.getNotificationChannel(name) == null) {
        final NotificationChannel channel =
                new NotificationChannel(CHANNEL_ID, name, IMPORTANCE_DEFAULT);
        mgr.createNotificationChannel(channel);
    }
}

//Usage...
createNotificationChannel(context);

NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID);
builder.setSmallIcon(R.drawable.ic_alarm_white_24dp);
//etc...
manager.notify(id, builder.build());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...