0

Я создал большое уведомление вида стиля в службеУведомления передать информацию для деятельности

Я намерен поставить кнопку, которая будет передавать некоторую информацию обратно к деятельности, но это, кажется, деятельность просто не может получить дополнительные услуги, которые я задал раньше.

Вот код, который я использовал, чтобы показать уведомление:

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 может быть запущен успешно, но он не может получить дополнительные функции, которые я задал раньше.

Итак, где возможные проблемы в моем коде?

Если вам требуются какие-либо другие подробности, пожалуйста, укажите в комментарии, я обновлю свой вопрос с этими деталями соответственно.

ответ

0

У меня была проблема с тем же типом, когда я передавал строку из моего уведомления в мою начальную активность, чтобы решить эту проблему. 1) возьмите одну строку, например. общественные Струнное поле температуры в приложении расширенный класса теперь вместо этого

discardIntent.putExtra("piAction", "discard"); 

использование этого

YourApplication app = (YourApplication)getApplicationContext(); 
    app.temp = "discard"; 

в вашей деятельности вместо этого

Bundle extras = getIntent().getExtras(); 
     if (extras != null) { 
      Log.i(TAG, "extras not null"); 
      if (extras.containsKey("piAction")) { 
       Log.i("Intent Received", "piAction"); 

      } 
     } 

получить статус piAction от YourApplication

YourApplication app = (YourApplication)getApplicationContext(); 
String stringFromNotification = app.temp; 
+0

Привет, спасибо. Будет ли он работать, если моя служба запущена, а активность - в фоновом режиме (точнее, 'onPause()')? – dumbfingers

+0

yep Я делаю то же самое, он будет работать – andrewww

+0

спасибо, я попробую ваш подход и отчитаюсь :) – dumbfingers

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