Как работают уведомления для андроид приложения для всех уровней API? - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь заставить работать уведомления для приложения Android. Как заставить его отправлять уведомления, например, между двумя телефонами, работающими на уровне API 22 (Android 5.1) и API уровня 26 (Android 8.0)?

Если я отправляю уведомление с телефона A (Android 5.1) на телефон B (Android 8.0), уведомление отображается только тогда, когда приложение убито или находится в фоновом режиме, но не когда я в приложении и намерение подключено к уведомлению. не работает все вместе. При отправке уведомления от B к A приложение не отображает уведомление, если приложение убито, только если оно находится в фоновом режиме или если я нахожусь в приложении, а уведомление при нажатии вызывает сбой приложения, когда приложение находится в фоновом режиме, но не когда я Я в приложении.

Как мне заставить его отображать уведомление на обоих телефонах, если приложение убито или находится в фоновом режиме или на переднем плане, и заставить намерение из уведомления работать, а не сбить приложение?

Это мой первый вопрос о переполнении стека, поэтому я заранее прошу прощения за любые ошибки и орфографические ошибки.

    String channelId = "Default";

    Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

    NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

    NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.mipmap.ic_launcher)
            .setContentTitle(notification_title)
            .setContentText(notification_body)
            .setSound(defaultSoundUri)
            .setPriority(NotificationCompat.PRIORITY_HIGH);

    Intent resultIntent = new Intent(click_action);
    resultIntent.putExtra("user_id", from_user_id);
    PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    builder.setContentIntent(resultPendingIntent);

    int notificationId = (int) System.currentTimeMillis();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

        NotificationChannel channel = new NotificationChannel(channelId, "Default channel", NotificationManager.IMPORTANCE_HIGH);
        manager.createNotificationChannel(channel);

    }

    manager.notify(notificationId, builder.build());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...