Java Android registerReceiver正在运行等待AlarmManager系统消息的服务
我有正在运行的服务,包括广播接收器。 我需要广播接收器从报警管理器发出的系统计时器时钟中断中获取消息。 这背后的主要思想是,当用户关闭应用程序时,服务将继续监听,直到时间中断发生。 我不知道它为什么不起作用:请问如何纠正它 主要活动:Java Android registerReceiver正在运行等待AlarmManager系统消息的服务,java,android,broadcastreceiver,alarmmanager,Java,Android,Broadcastreceiver,Alarmmanager,我有正在运行的服务,包括广播接收器。 我需要广播接收器从报警管理器发出的系统计时器时钟中断中获取消息。 这背后的主要思想是,当用户关闭应用程序时,服务将继续监听,直到时间中断发生。 我不知道它为什么不起作用:请问如何纠正它 主要活动: service.registerRecvierForAlarm(); Intent intent = new Intent(Send.this, SmsReciverService.class); intent.setAction("intent_myactio
service.registerRecvierForAlarm();
Intent intent = new Intent(Send.this, SmsReciverService.class);
intent.setAction("intent_myaction_alarm");
PendingIntent pintent = PendingIntent.getBroadcast(Send.this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP, time, pintent);
服务:
public void registerRecvierForAlarm(){
IntentFilter intentFilter = new IntentFilter("intent_myaction_alarm");
this.ReceiverAlarm = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("message recived");
}
};
this.registerReceiver(this.ReceiverAlarm,intentFilter);
}
SmsReciverService是一种服务,因此您需要使用getService来创建PendingEvent,而不是GetBroadcast来创建PendingEvent,以便BroadcastReceiver使用AlarmManager启动服务:
或
如果需要使用AlarmManager触发BroadcastReceiver,则使用类名创建意图,该类名将BroadcastReceiver扩展为意图构造函数的第二个参数:
Intent intent = new Intent(Send.this, SmsReciverBroadcast.class);
^^^^^^
intent.setAction("intent_myaction_alarm");
PendingIntent pintent = PendingIntent.getBroadcast(Send.this, 0, intent, 0);
我知道这一点,但我不想在以后启动该服务,该服务一直在运行。我需要该服务使用broadcastReceiver侦听系统。@StavBodik:然后使用broadcastReceiver名称创建意图请参见我的编辑answer@StavBodik:但对于broadcastReceiver,您可能需要通过扩展broadcastReceiver来创建Receiver,并在AndroidManifest中注册自定义操作意图\u myaction\u报警,而不是注册动态使用RegisterReceiver这正是我正在做的问题是我的类SmsReciverBroadcast扩展服务,它是一个具有BroadcastReceiver的服务。@StatBodik:确定,然后作为Intent Intent=new IntentSend.this,ReceiverAlarm.class尝试它;
Intent intent = new Intent(Send.this, SmsReciverBroadcast.class);
^^^^^^
intent.setAction("intent_myaction_alarm");
PendingIntent pintent = PendingIntent.getBroadcast(Send.this, 0, intent, 0);