Запуск и остановка уведомления от приемника вещания - PullRequest
7 голосов
/ 20 июля 2011

Я пытаюсь запустить уведомление строки состояния от приемника вещания, а затем остановить его от другого приемника вещания, но у меня возникают проблемы.Я хотел бы запустить уведомление в строке состояния, когда USB подключен, а затем, когда USB отключен, я хотел бы остановить его. У меня есть два настроенных приемника, которые работают, просто борясь с запуском и остановкой одного из приемников, вот кодВ настоящее время у меня

Моя единственная ошибка с моим кодом - строка myNotificationManager = (NotificationManager) getSystemService(context.NOTIFICATION_SERVICE);, ошибка просто говорит, что getSystemService не определена, и он хочет создать метод, который, как я предполагаю, означает, что получатель не поддерживает этот методкак действие, так что я должен сделать, чтобы создать и прекратить уведомление от получателей спасибо за любую помощь

public class USBConnect extends BroadcastReceiver {

public NotificationManager myNotificationManager;
public static final int NOTIFICATION_ID = 1;

@Override
public void onReceive(Context context, Intent intent) {

    myNotificationManager = (NotificationManager) getSystemService(context.NOTIFICATION_SERVICE);

      CharSequence NotificationTicket = "USB Connected!";
      CharSequence NotificationTitle = "USB Connected!";
      CharSequence NotificationContent = "USB is Connected!";

      Notification notification = new Notification(R.drawable.usbicon, NotificationTicket, 0);
      Intent notificationIntent = new Intent(context, MyClass.class);
      PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
      notification.setLatestEventInfo(context, NotificationTitle, NotificationContent, contentIntent);
      notification.flags |= Notification.FLAG_ONGOING_EVENT;
      myNotificationManager.notify(NOTIFICATION_ID, notification);
      }
}

А затем получатель, когда он отключает это, я считаю, хорошо и должно работатьЯ думаю, что моя проблема только в классе USBConnect

public class USBDisCon extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); 
    notificationManager.cancel(USBConnect.NOTIFICATION_ID);
    }
}

Ответы [ 4 ]

9 голосов
/ 21 июля 2011

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

public class USBConnect extends BroadcastReceiver {

public NotificationManager myNotificationManager;
public static final int NOTIFICATION_ID = 1;

@Override
public void onReceive(Context context, Intent intent) {

    myNotificationManager = (NotificationManager) getSystemService(context.NOTIFICATION_SERVICE);

      CharSequence NotificationTicket = "USB Connected!";
      CharSequence NotificationTitle = "USB Connected!";
      CharSequence NotificationContent = "USB is Connected!";

      Notification notification = new Notification(R.drawable.usbicon, NotificationTicket, 0);
      Intent notificationIntent = new Intent(context, MyClass.class);
      PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
      notification.setLatestEventInfo(context, NotificationTitle, NotificationContent, contentIntent);
      notification.flags |= Notification.FLAG_ONGOING_EVENT;
      myNotificationManager.notify(NOTIFICATION_ID, notification);
      }
}

И затем приемник, когда он отключается, я считаю, что это нормально и должно работать, я думаю, что моя проблема только в классе USBConnect

public class USBDisCon extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); 
    notificationManager.cancel(USBConnect.NOTIFICATION_ID);
    }
}
3 голосов
/ 04 декабря 2011

Я столкнулся с этой проблемой сам. Я думаю, что пользователь забыл обновить код в ответе. context должен быть в ДВАЖДЫ! Я неправильно понял это в первый раз!

myNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

Надеюсь, это поможет кому-то смущенному!

0 голосов
/ 05 августа 2013

Это способ использования уведомлений от broadcastReceivers:

NotificationManager mgr = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);

Расписание тревог от BroadcastReceivers:

AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);

Вы всегда должны использовать префикс контекста!

0 голосов
/ 20 июля 2011

getSystemService undefined наиболее вероятно означает, что вы не импортировали android.app.Activity (getSystemService определено в android.app.Activity).

...