0

У меня есть диспетчер аварийных сообщений, который помещает текущее время в сообщение и выводит это сообщение в сообщение Toast.Отображение уведомления от диспетчера аварийных сигналов

Что я хочу сделать, это вывести уведомление вместо сообщения с тостами и изо всех сил пытались это сделать.

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

Вот моя кнопка, которая получает тост от радиовещательного приемника:

public void onetimeTimer(View view){ 
    Context context = this.getApplicationContext(); 
    if(alarm != null){ 
     alarm.setOnetimeTimer(context); 
    }else{ 
     Toast.makeText(context, "Alarm is null", Toast.LENGTH_SHORT).show(); 
    } 
} 

Вот мой менеджера сигнализации Broadcast Receiver:

public class AlarmManagerBroadcastReceiver extends BroadcastReceiver { 

final public static String ONE_TIME = "onetime"; 

@Override 
public void onReceive(Context context, Intent intent) { 
    // TODO Auto-generated method stub 

    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
    PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "YOUR TAG"); 
    //Acquire the lock 
    wl.acquire(); 

    //You can do the processing here update the widget/remote views. 
    Bundle extras = intent.getExtras(); 
    StringBuilder msgStr = new StringBuilder(); 

    if(extras != null && extras.getBoolean(ONE_TIME, Boolean.FALSE)){ 
    msgStr.append("One time Timer : "); 
    } 
    Format formatter = new SimpleDateFormat("hh:mm:ss a"); 
    // msgStr.append(formatter.format(new Date())); 

    //msgStr.append(); 

    Toast.makeText(context, msgStr, Toast.LENGTH_LONG).show(); 

    //Release the lock 
    wl.release(); 

} 

Вот метод в приемнике Broadcast:

public void setOnetimeTimer(Context context){ 
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
    Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class); 
    intent.putExtra(ONE_TIME, Boolean.TRUE); 
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0); 
    am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), pi); 
    } 

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

Button btnNotifyWorkout = (Button)findViewById(R.id.btnNotifyWorkout); 
      btnNotifyWorkout.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        Intent intent = new Intent(); 
        PendingIntent pIntent = PendingIntent.getActivity(HomeActivity.this, 0, intent, 0); 
        Notification noti = new Notification.Builder(HomeActivity.this) 
               .setTicker("TickerTitle") 
               .setContentTitle("Lukes App") 
               .setContentText("You have a workout due today") 
               .setSmallIcon(R.drawable.ic_launcher) 
               .setContentIntent(pIntent).getNotification(); 

        noti.flags = Notification.FLAG_AUTO_CANCEL; 
        NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 
        nm.notify(0, noti); 
       } 
      }); 

ответ

1

Попробуйте положить ваш код уведомления внутри «OnReceive» в менеджер сигнализации приемника

Но с несколько настроек:

Intent intent = new Intent(); 
PendingIntent pIntent = PendingIntent.getActivity(context, 0, intent, 0); 
Notification noti = new Notification.Builder(context) 
    .setTicker("TickerTitle") 
    .setContentTitle("Lukes App") 
    .setContentText("You have a workout due today") 
    .setSmallIcon(R.drawable.ic_launcher) 
    .setContentIntent(pIntent).getNotification(); 

noti.flags = Notification.FLAG_AUTO_CANCEL; 
NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
nm.notify(0, noti); 
+0

Я добавил уведомление между w1.acquire и w1.release, но это не все равно NOTIFICATION_SERVICE, я получаю сообщение об ошибке: «NOTIFICATION_SERVICE не может быть разрешено переменной» – Coco12

+0

Правильно, извините, я тоже забыл это отрегулировать, просто замените это на Context.NOTIFICATION_SERVICE. Я скорректировал ответ –

+0

Thats great, который решил мою проблему отлично! Спасибо за помощь! :) – Coco12