Я создал большое уведомление вида стиля в службеУведомления передать информацию для деятельности
Я намерен поставить кнопку, которая будет передавать некоторую информацию обратно к деятельности, но это, кажется, деятельность просто не может получить дополнительные услуги, которые я задал раньше.
Вот код, который я использовал, чтобы показать уведомление:
public class TestService extends Service {
...
@Override
public void onCreate() {
showNotification();
}
private void showNotification() {
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
new Intent(this, TestActivity.class), PendingIntent.FLAG_UPDATE_CURRENT);
Intent discardIntent = new Intent(this, TestActivity.class);
discardIntent.putExtra("piAction", "discard");
PendingIntent piDiscard = PendingIntent.getActivity(this, 0, discardIntent, PendingIntent.FLAG_CANCEL_CURRENT);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
mBuilder.setSmallIcon(R.drawable.ic_launcher);
mBuilder.setContentTitle("Test Notification");
mBuilder.addAction(R.drawable.content_discard, "Discard", piDiscard);
mBuilder.setStyle(new NotificationCompat.BigTextStyle().bigText("Test service is running"));
mBuilder.setContentIntent(contentIntent);
Notification notification = mBuilder.build();
notification.flags |= Notification.FLAG_AUTO_CANCEL;
mNotificationManager.notify(0, notification);
}
...
}
А вот деятельность, которая будет ловить информацию, посланную кнопку в уведомлении
public class TestActivity extends Activity {
...
@Override
protected void onResume() {
super.onResume();
Log.i("Activity Resume", "onResume");
Bundle extras = getIntent().getExtras();
if (extras != null) {
Log.i(TAG, "extras not null");
if (extras.containsKey("piAction")) {
Log.i("Intent Received", "piAction");
}
}
}
...
}
Пожалуйста, обратите внимание, при запуске TestActivity
он также запустит TestService
. То, что я намереваюсь сделать, - это нажать кнопку discard
внутри уведомления, она будет передавать ранее добавленную сумму обратно на TestActivity
. Однако после нескольких тестов я обнаружил, что TestActivity
может быть запущен успешно, но он не может получить дополнительные функции, которые я задал раньше.
Итак, где возможные проблемы в моем коде?
Если вам требуются какие-либо другие подробности, пожалуйста, укажите в комментарии, я обновлю свой вопрос с этими деталями соответственно.
Привет, спасибо. Будет ли он работать, если моя служба запущена, а активность - в фоновом режиме (точнее, 'onPause()')? – dumbfingers
yep Я делаю то же самое, он будет работать – andrewww
спасибо, я попробую ваш подход и отчитаюсь :) – dumbfingers