当前位置: 首页 > 知识库问答 >
问题:

警报管理器立即触发

柯宜年
2023-03-14

嗨,我目前正在使用警报管理器。我写了下面给出的代码。根据代码,警报管理器应该在10秒后触发,但在我的代码中,警报管理器会立即触发。请帮助。

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
        int alarmType = AlarmManager.ELAPSED_REALTIME_WAKEUP;
        long timeOrLengthofWait = 10000;
        Intent intentToFire = new Intent(this, AlarmReciever.class);
        PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, intentToFire, 0);
        alarmManager.set(alarmType, timeOrLengthofWait, alarmIntent);
    }
}

还有我的警报接收课

public class AlarmReciever extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {

        String phoneNumberReciever="5556";
        String message="Alarm Triggered";
        SmsManager sms = SmsManager.getDefault(); 
        sms.sendTextMessage(phoneNumberReciever, null, message, null, null);
        Toast.makeText(context," A message has been sent", Toast.LENGTH_LONG).show();

        Log.d("Alarm ", "Alarm Has been triggered and sms send");
    }
}

我已经在清单中添加了所需的权限。

共有2个答案

充运浩
2023-03-14

如果您正在为过去的时间创建一个悬而未决的警报,它将立即被触发。示例-将警报安排在今天上午8点,但在上午11点左右执行代码将立即触发。

解决方案

cal.add(Calendar.DATE, 1);

long delay = 24 * 60 * 60 * 1000;
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), delay,pendingIntent);` 

这将在第二天的指定时间(即上午8点)触发事件;

东方化
2023-03-14

您使用的报警类型为“已用\u实时\u唤醒”。这意味着set()的第二个参数必须是从现在开始的毫秒数,其中现在表示为系统时钟。elapsedRealtime()。

如果您的目标是在进行set()调用后10000毫秒发生这种情况,则该调用应为:

alarmManager.set(alarmType, SystemClock.elapsedRealtime()+timeOrLengthofWait, alarmIntent);
 类似资料:
  • 我每天上午11点使用显示通知。 当我在应用程序中设置警报时,警报会在短时间后触发。

  • 问题内容: 我正在Firefox上编写有关警报的Selenium测试。运行测试时,警报会出现一秒钟的时间,但是手动完成后,警报仍然存在。谁能说出为什么这样吗? 我尝试在Firefox上设置此配置文件,但这无济于事: 谁能告诉我如何使警报停留在页面上? 在代码中,我正在检查警报的存在,因为警报消失得太快了,它似乎永远不会被击中: 问题答案: 共有3种状态: -接受警报 -关闭/取消警报 -既不接受也

  • 问题内容: 我正在Firefox上编写有关警报的Selenium测试。运行测试时,警报会出现一秒钟的时间,但是手动完成后,警报仍然存在。谁能说出为什么这样吗? 我尝试在Firefox上设置此配置文件,但这无济于事: 谁能告诉我如何使警报停留在页面上? 在代码中,我正在检查警报的存在,因为由于警报消失得太快,它显然从未受到攻击: 问题答案: 共有3种状态: -接受警报 -关闭/取消警报 -既不接受也

  • 我正在火狐上写一个处理警报的硒测试。当测试运行时,警报会出现几分之一秒,但是当手动执行时,警报会持续存在。有人能说出为什么会这样吗? 我尝试在Firefox上设置此配置文件,但也没有帮助: 有人能告诉我如何让警报留在页面上吗? 在代码中,我检查警报是否存在,如下所示,由于警报消失得太快,因此显然从未被击中: