2010-06-20 3 views
2

Я хотел бы знать, есть ли способ использовать панель уведомлений для выполнения некоторых операций (onClick) без запуска/возобновления активности.Пользовательское уведомление

, например .. скажем я поднять notifcation, и когда пользователь нажимает на нее, то вместо того, чтобы взять меня к какой-либо деятельности, то ссылаться на какой-то регулярный метод в моей текущей деятельности/услуг

Есть ли способ реализовать такую ​​вещь?

например, текущий код обозначения делает стандартное поведение onClick. запуск активности .. как будет связывать код, чтобы вызвать какой-то метод вместо активности?

 messagesManager = (NotificationManager) 
       context.getSystemService(Context.NOTIFICATION_SERVICE); 


    Notification notification = new Notification(R.drawable.icon, message, 
      System.currentTimeMillis()); 
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, 
      new Intent(context, someActivity.class), 0); 
    notification.setLatestEventInfo(context, "notification", message, 
      contentIntent); 
    messagesManager.notify(R.string.noto, notification); 

ответ

3

Есть ли способ реализовать такую ​​вещь ?

Используйте подходящий PendingIntent. Вместо того, чтобы звонить getActivity(), звоните getService() или getBroadcast().

+0

Как getService или getBroadcast поможет мне вызвать обычный метод? не могли бы вы показать мне пример такого ожидающего намерения? – Moshik

+1

В режиме «BroadcastReceiver» или «Сервис» (в отличие от «Активность»), запущенного нажатием на уведомление, вы можете «вызвать какой-либо метод». –

+1

Да, но как я могу вызвать метод (через панель уведомлений) в той же службе, которая вызвала это уведомление? это любой метод, который я мог бы переопределить в этой службе, когда getService вызывается из диспетчера уведомлений (и оттуда я могу перейти к моему целевому методу) – Moshik

0

Я не верю, что это возможно или, по крайней мере, лучшая практика. Возможно, Android может убить вашу активность, пока уведомление все еще ждет в верхней панели. Например, может быть, вы получите телефонный звонок, но у Android мало оперативной памяти - он убивает вашу деятельность, поэтому на самом деле не существует «текущей» активности.

Смежные вопросы