2016-01-27 2 views
2

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

private void startForeground(boolean isActive) { 
     Intent notificationIntent = new Intent(this, MainActivity.class); 
     PendingIntent pendingIntent = PendingIntent.getActivity(this, 1, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

     Notification notification = new NotificationCompat.Builder(this) 
       .setSmallIcon(R.mipmap.ic_launcher) 
       .setContentTitle(getString(isActive ? R.string.title_agent_active : R.string.title_agent_inactive)) 
       .setContentIntent(pendingIntent) 
       .build(); 

     startForeground(1, notification); 
    } 

и

@Override 
    protected void onHandleIntent(Intent intent) { 
     startForeground(true); 
     ... 

С этим уведомлением код не отображается.

Но если я заменил startForeground (...) с NotificationManager.notify (...) - он отображает уведомление, поэтому, я думаю, что хотя бы код здания уведомления одобрен.

Где может быть проблема?

ответ

4

Если вы используете IntentService, служба будет уничтожена, как только onHandleIntent() метод завершит выполнение, а затем уведомление будет удалено.

+1

Проблема в том, что она не появляется вообще :( – arts777

+0

Как долго это действительно возвращает метод onHandleIntent()? – kleinsenberg

+0

Смена IntentService для обслуживания работала для меня .. – Vinay

1
  1. попытки изменить идентификатор в другую
  2. старта в onCreate() методы
  3. проверкой уведомление не заблокированы в устройстве
  4. пытается использовать эти флаги: noti.flags = Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR;
  5. Используйте обычный Service класс

попробуйте это решение (работает в моем приложении):

private void fg() { 
     Intent intent = launchIntent(this); 

     PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0); 
     mBuilder = new NotificationCompat.Builder(this); 
     mBuilder.setContentTitle(getResources().getString(R.string.app_name)) 
      .setContentText(getResources().getString(R.string.app_name)) 
      .setSmallIcon(R.drawable.icon) 
      .setContentIntent(pIntent); 
     noti = mBuilder.build(); 
     noti.flags = Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR; 
     startForeground(_.ID, noti); 

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