Как получить данные о намерениях уведомления - PullRequest
0 голосов
/ 02 ноября 2018

Я хочу показать уведомление на каком-то событии, оно работает нормально, я также выполняю задание, которое хочу, но проблема в том, что данные о намерениях пусты, пожалуйста, вот код

    Intent resultIntent = new Intent(context, MovieDetailActivity.class);
        resultIntent.putExtra(Constants.MOVIE_ID, cursor.getString(
                cursor.getColumnIndexOrThrow(DatabaseHelper.ID)));
        TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
        stackBuilder.addNextIntentWithParentStack(resultIntent);
        PendingIntent resultPendingIntent =
                stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
        NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
                .setSmallIcon(R.drawable.ic_download)
                .setContentIntent(resultPendingIntent)
                .setContentTitle(cursor.getString(
                        cursor.getColumnIndexOrThrow(DatabaseHelper.NAME)))
                .setAutoCancel(true)
                .setContentText(cursor.getString(
                        cursor.getColumnIndexOrThrow(DatabaseHelper.REALEASE_DATE)));
        NotificationManager notificationManager = (NotificationManager)
                context.getSystemService(context.NOTIFICATION_SERVICE);

        notificationManager.notify(1, builder.build()
        );

Я отправляю некоторые данные, используя намерение, в этой строке.

resultIntent.putExtra(Constants.MOVIE_ID, cursor.getString(
                cursor.getColumnIndexOrThrow(DatabaseHelper.ID)));

Я получаю данные здесь, но это Null.

Intent receivedIntent = getIntent();
    mMovieId = receivedIntent.getIntExtra(Constants.MOVIE_ID, -1);

Пожалуйста, помогите, я потратил на это целый день.

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Вы переходите в намерение String, поэтому вы не можете получить Integer из намерения, поэтому вы получаете ноль.

Поэтому измените эту строку:

mMovieId = receivedIntent.getIntExtra(Constants.MOVIE_ID, -1);

до

 mMovieId = receivedIntent.getStringExtra(Constants.MOVIE_ID);  
// and simply parse string to integer  
       int id = Integer.parseInt(mMovieId);
0 голосов
/ 02 ноября 2018

Вам нужно изменить PendingIntent для:

PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0 , resultIntent, PendingIntent.FLAG_CANCEL_CURRENT);

Я надеюсь, это решит вашу проблему.

...