Уведомление Java с PendingIntent и putExtra не работают - PullRequest
0 голосов
/ 28 мая 2018

У меня есть сообщение FireBase.Если он приходит, я показываю Уведомление (работает).Когда я нажимаю на уведомление, оно должно открыть мое приложение (работает).Теперь я хочу использовать putExtra (), чтобы передать некоторую информацию моему приложению (это работает только иногда - если приложение находится на переднем плане).Это моя проблема.

   private void sendMyNotification(String message) {

    int rndNo4Intent = Math.round((float)(Math.random()*100000000));
    int rndNo4Msg = Math.round((float)(Math.random()*100000000));

    //On click of notification it redirect to this Activity
    Intent intent = new Intent(this, MainActivity.class);
    intent.putExtra("action","openWiki"+rndNo4Msg); // My Test-Data

    PendingIntent pendingIntent = PendingIntent.getActivity(this, rndNo4Intent , intent, PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

    String channelId = getString(R.string.default_notification_channel_id);
    Uri soundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, channelId)
            .setSmallIcon(R.mipmap.ic_launcher)
            .setContentTitle("CodingSpace")
            .setContentText(message)
            .setAutoCancel(true)
            .setSound(soundUri)
            .setContentIntent(pendingIntent);

    // Since android Oreo notification channel is needed. Sonst kommt nichts an.
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        NotificationChannel channel = new NotificationChannel(channelId,
                "CodingSpaceChannel",
                NotificationManager.IMPORTANCE_HIGH);               // in Oreo ist High so, dass es einen Ton gibt
        notificationManager.createNotificationChannel(channel);
    }


   notificationManager.notify(rndNo4Msg, notificationBuilder.build());
}

В классе .MainActivity:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ...        


    Intent iin= getIntent();
    String msg = iin.getStringExtra("action");
    Toast.makeText(MainActivity.this,"get: "+ msg,Toast.LENGTH_SHORT).show();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...