2010-09-22 5 views
2

Я пытаюсь запустить действие из панели уведомлений, но ему нужно получить 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)); 
+0

как вы пытаетесь восстановить его? Не могли бы вы также добавить этот код? – Shouvik

+0

Я добавил, что там. Он просто распечатывает -1 – FuegoFingers

ответ

4

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

 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); 
    } 
+0

Работал отлично. Благодарю. – FuegoFingers