Android: событие Click для уведомления строки состояния

У меня есть следующий код для создания сообщения в строке состояния:

public void txtNotification(int id, String msg){ NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); Notification notification = new Notification(android.R.drawable.sym_action_email, msg, System.currentTimeMillis()); // The PendingIntent will launch activity if the user selects this notification Intent intent = new Intent(this, MainActivity.class) intent.putExtra("yourpackage.notifyId", id); PendingIntent contentIntent = PendingIntent.getActivity(this, 1, intent, 0); notification.setLatestEventInfo(this, "title", msg, contentIntent); manager.notify(id, notification); } 

Когда кликнуто уведомление, я хочу вызвать метод, желательно с доступом к идентификатору уведомления.

Заранее спасибо,

Тим

(EDIT: я обновил свой код после прочтения первого ответа, но я до сих пор не знаю, как слушать намерение)

Solutions Collecting From Web of "Android: событие Click для уведомления строки состояния"

Я думаю, что лучший способ обработать клик на уведомлении (возможно, единственный способ?) – определить метод внутри класса, который вызывает ваш PendingIntent (MainActivity в этом случае). Вы можете изменить свое намерение, прежде чем передавать его в getActivity (), чтобы включить идентификатор уведомления:

 // The PendingIntent will launch activity if the user selects this notification Intent intent = new Intent(this, MainActivity.class) intent.putExtra("yourpackage.notifyId", id); PendingIntent contentIntent = PendingIntent.getActivity(this, 1, intent, 0); 

Затем следите за этим намерением в MainActivity и вызывайте метод, который вы определили в классе, для обработки уведомления. Вы можете извлечь идентификатор из входящего Intent.

Обновить:

Чтобы ваша деятельность обрабатывала уведомление, вам нужно сначала определить Activity в вашем файле AndroidManifest.xml , включая любые необходимые фильтры намерений. Затем в onStart () вашей активности вы можете извлечь дополнительные данные из входящего намерения и действовать в соответствии с этими данными. Это обзор высокого уровня, поэтому я предлагаю вам прочитать части руководства Dev, чтобы ознакомиться с концепциями. Следующая страница – хорошее место для начала:

http://developer.android.com/guide/topics/fundamentals.html

Также «yourpackage» следует заменить именем пакета, который включает ваш класс, например «com.project.foo».

Для таких манекенов, как я: получение этого пакета yourpackage.notifyId в MainActivity:

  protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Bundle intent_extras = getIntent().getExtras(); if (intent_extras != null && intent_extras.containsKey("yourpackage.notifyId")) { //Do the codes } } 

В моем случае – использовал его, чтобы определить, кто открывает мою mainactivity, пользователя или вызов из уведомления, cated by GcmIntentService … PS Я использовал имена без «youpackage», отлично работает.