Намерения к действию из строки состояния уведомлений?

Я пытаюсь запустить действие из панели уведомлений, но ему нужно получить int. От действия к действию я бы просто добавил int в намерение, но я не могу понять, где добавить дополнительное для панели уведомлений? Это возможно? Если нет, есть ли лучший способ сделать это?

public void notifyMe() {
    int icon = android.R.drawable.presence_away;
    CharSequence tickerText = "New Task Availible";
    long when = System.currentTimeMillis();

    Notification notification = new Notification(icon, tickerText, when);

    Context context = getApplicationContext();
    CharSequence contentTitle = "PRISM Task";
    CharSequence contentText = "New Task Availible";
    Intent notificationIntent = new Intent(this, TextAnswerActivity.class);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
    notificationIntent.putExtra("taskId", 20);  //unable to retrieve 20 later

    notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

    final int HELLO_ID = 1;

    mNotificationManager.notify(HELLO_ID, notification);
}

Как я получаю:

Intent myIntent = getIntent();
System.out.println("#######TaskID from Intent ===== " + myIntent.getIntExtra("taskId", -1));

person FuegoFingers    schedule 22.09.2010    source источник
comment
как вы пытаетесь его восстановить? Не могли бы вы тоже выложить этот код?   -  person Shouvik    schedule 22.09.2010
comment
Я добавил это туда. Он просто печатает -1   -  person FuegoFingers    schedule 22.09.2010


Ответы (1)


Вы должны вызвать уведомлениеIntent.putExtras(...) перед созданием PendingIntent, который принимает уведомлениеIntent в качестве параметра. Попробуйте этот код:

        Intent notificationIntent = new Intent(this, TextAnswerActivity.class);
        notificationIntent.putExtra("taskId", 20);

        PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

        Notification notification = new Notification(icon, tickerText, when);
        notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 

И чтобы получить данные:

    Bundle b = getIntent().getExtras();
    if (b != null) {
        int taskId = b.getInt("taskId");
        System.out.println("############# taskID: " + taskId);
    }
person Maciej Pigulski    schedule 22.09.2010