Отправить данные на активность, когда нажали на уведомление? - PullRequest
0 голосов
/ 21 мая 2019

Я открываю активность при нажатии на уведомление. Уведомление активируется из класса обслуживания. Я хочу отправить данные в новое действие, открытое из уведомления. Я использую intent1.putExtra ("lable", lable); но в новой деятельности это дает мне исключение nullpointer.

 intent1 = new Intent(this.getApplicationContext(), simplestop.class);
            intent1.putExtra("lable",lable);

PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent1, 0); 
Notification mNotify  = new Notification.Builder(this)
            .setContentTitle("title" + "!")
            .setContentText("Click me!")
            .setSmallIcon(R.drawable.ic_launcher_background)
                            .setContentIntent(pIntent)
            .setAutoCancel(true)
            .build();

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Отправка данных.

Intent intent = new Intent(getApplicationContext(), simplestop.class);
intent.putExtra("lable", lable);

PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

final RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.yourLayoutOfNotification);
contentView.setOnClickPendingIntent(R.id.IdOfTheItemYouClick, contentIntent);

Попробуйте получить данные примерно так в вашем simplestop.class

if (getIntent().getDataString() == null) {
   String lable = Objects.requireNonNull(getIntent().getExtras()).getString("lable");
 }

И я думаю, вам нужно вызвать onNewIntent в simplestop.class И там для извлечения данных.

И попробуйте создать Log, если данные извлекаются.

Log.d("Data", lable);

И скажите, что показывает Log.

0 голосов
/ 21 мая 2019

Я использую этот код для отправки данных на activity.

Intent intent = new Intent(this, MainActivity.class)
                            .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
                    intent.putExtra("from", "notification");
                    pIntent = PendingIntent.getActivity(this, 3, intent,
                            PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT);

. Возможно, у вас возникли проблемы с настройкой flag=0 или попробуйте изменить запрос code=0 на любое другое целое число.

...