1

Столкнувшись с проблемой отображения уведомлений в android Lollipop. Когда приложение открыто, уведомления показывают, что приложение отлично, но когда приложение закрыто, они не отображаются. В 4х версиях Android все работает правильно. Вот метод, чтобы отобразить ихandroid Lollipop. Уведомления не работают

@TargetApi(Build.VERSION_CODES.LOLLIPOP) 
    private void sendNotification(String body, String title, String badge) { 
     Intent intent = new Intent(this, MainActivity.class); 
     intent.putExtra("from_notify", true); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     PendingIntent pendingIntent = PendingIntent.getActivity(this, Integer.valueOf(badge), intent, 
       PendingIntent.FLAG_ONE_SHOT); 

     Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
       .setSmallIcon(R.drawable.ic_stat_name) 
       .setContentTitle(title) 
       .setContentText(body) 
       .setPriority(Notification.PRIORITY_HIGH) 
       .setShowWhen(true) 
       .setVisibility(Notification.VISIBILITY_PUBLIC) 
       .setAutoCancel(true) 
       .setSound(defaultSoundUri) 
       .setContentIntent(pendingIntent); 

     NotificationManager notificationManager = 
       (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

     notificationManager.notify(0, notificationBuilder.build()); 
    } 
+0

Я проверил ваш код на моем устройстве с леденец, и он отлично работает. Протестировано в обоих случаях, начиная с активности и с широковещательного приемника. Чтобы убедиться, что активность мертва, приемник отвечает на действие BOOT. Так что проблема в другом месте. Могу ли я спросить, что является производителем вашего тестового устройства? Некоторые производители делают некоторые дополнительные «оптимизации приложений». Например, для Huawei это буквально принудительно останавливает ваше приложение, поэтому никакой широковещательный приемник не будет работать, и это будет соответствовать описанному поведению. Помните, что «force stop» отключает ваше приложение до перезапуска с панели запуска. – mhenryk

ответ

0

Я думаю, что это проблема:

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

попробовать это:

public class YourService extends Service { 
@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    //send your notifications here 
    return START_STICKY; 
} 
@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 
} 

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

Надеюсь, это поможет вам.

+0

Это неправда. Только текущие уведомления требуют поддержки службы. Регулярные уведомления, такие как вопрос, можно запустить из любого места. – mhenryk

+0

только я сказал вам, что (я думаю), я не работал с lolipop, мне жаль, что вы не нашли ответ быстро, удачи. – phoenix

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