重复报警broadcastreciever意图字符串附加功能未获得更新 [英] Recurring alarm broadcastreciever intent string extras not getting updated

查看:90
本文介绍了重复报警broadcastreciever意图字符串附加功能未获得更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下课程来检查我的闹钟是否在我安排的确切时间被触发或是否有所不同。



我将调用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆