重复报警broadcastreciever意图字符串附加功能未获得更新 [英] Recurring alarm broadcastreciever intent string extras not getting updated
问题描述
我有以下课程来检查我的闹钟是否在我安排的确切时间被触发或是否有所不同。
我将调用SetAlarm方法MainActivity的BroadCast接收器。连续警报将由接收器本身设置,方法是将当前时间设置为新的字符串额外值。
警报工作正常,但问题是Intent字符串附加功能没有得到更新。无论我在setAlarm方法中设置了什么,ScheduledTime总是保持初始值。
public class AlarmReceiver extends BroadcastReceiver {
@ Override
public void onReceive(Context context,意图意图){
Date currentTime = new Date();
字符串 ScheduledTime = ;
if (null!= intent){ // 空检查
ScheduledTime = intent.getStringExtra( ScheduledTime) ;
// intent.removeExtra(ScheduledTime);
}
字符串 message = 当前时间 + currentTime + ,预定时间为: + ScheduledTime;
// 显示通知
long alarmMillis =( 10 * 60 * 1000 ); // 10分钟后设置闹钟
long newTimeInMillis = System.currentTimeMillis()+ alarmMillis;
currentTime.setTime(newTimeInMillis);
setAlarm(context,newTimeInMillis,currentTime.toString());
}
public void setAlarm(Context context,Long timeMillis , String ScheduledTime)
{
AlarmManager am =(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context,AlarmReceiver。 class );
i.putExtra( ScheduledTime,ScheduledTime);
PendingIntent pi = PendingIntent.getBroadcast(context, 0 ,i, 0 );
am.setExact(AlarmManager.RTC_WAKEUP,timeMillis,pi);
}
}
我的尝试:
我尝试从广播接收器中删除Extra(我在代码块中评论过)。仍然没有工作。
尝试更改:
PendingIntent pi = PendingIntent.getBroadcast(context,0,i ,0);
要
PendingIntent pi = PendingIntent.getBroadcast(context,0,i,PendingIntentFlags.UpdateCurrent );
I have the below class to check if my alarms are being triggered at the exact time which I scheduled or is it differing.
I will call SetAlarm method inside the BroadCast Reciever from MainActivity. The consecutive alarms will be set by the Receiver itself by setting current time as its new string extra.
Alarms are working fine except the issue Intent string extras are not getting updated. ScheduledTime will always hold the initial value regardless of what I have set it in the setAlarm method.
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Date currentTime = new Date();
String ScheduledTime = "";
if (null != intent) { //Null Checking
ScheduledTime = intent.getStringExtra("ScheduledTime");
//intent.removeExtra("ScheduledTime");
}
String message = "Current Time" + currentTime + ", Scheduled Time was: " + ScheduledTime ;
//Show Notification
long alarmMillis =(10*60*1000) ; //Set Alarm after 10 minutes
Long newTimeInMillis = System.currentTimeMillis() + alarmMillis;
currentTime.setTime(newTimeInMillis );
setAlarm(context, newTimeInMillis , currentTime.toString());
}
public void setAlarm(Context context, Long timeMillis, String ScheduledTime)
{
AlarmManager am =( AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, AlarmReceiver.class);
i.putExtra("ScheduledTime", ScheduledTime);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
am.setExact(AlarmManager.RTC_WAKEUP, timeMillis, pi);
}
}
What I have tried:
I have tried removing Extra from the Broadcast Receiver (which I commented in the code block). Still not working.
Try changing:
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
To
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, PendingIntentFlags.UpdateCurrent);
这篇关于重复报警broadcastreciever意图字符串附加功能未获得更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!