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

无法使用AlarmManager设置警报

邢思淼
2023-03-14

我试过很多次了,但什么也没有。

这是类的代码,它应该设置警报,但在指定的时间和日期没有发生任何事情。

package com.beppe.reminder;

import java.util.Calendar;
import java.util.Date;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.provider.AlarmClock;

public class ReminderManager {

private Context mCtx;
private AlarmManager alarm;



public ReminderManager(Context Ctx){
    mCtx=Ctx;

}


public void setAlarm(Date d, long taskID){

    alarm=(AlarmManager) mCtx.getSystemService(Context.ALARM_SERVICE);

    Intent intent=new Intent(mCtx, OnAlarm.class);
    intent.putExtra(DBAdapter.KEY_ROWID, taskID);

    PendingIntent pi=PendingIntent.getBroadcast(mCtx, 0, intent, PendingIntent.FLAG_ONE_SHOT);

    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(System.currentTimeMillis());
    cal.clear();
    cal.set(d.getYear()+1900,d.getMonth(),d.getDate(),d.getHours(),d.getMinutes());


    alarm.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pi);
}

}

共有1个答案

季俭
2023-03-14
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);                 

                //---get current date and time---
                Calendar calendar = Calendar.getInstance();       

                //---sets the time for the alarm to trigger---
                calendar.set(Calendar.YEAR, datePicker.getYear());
                calendar.set(Calendar.MONTH, datePicker.getMonth());
                calendar.set(Calendar.DAY_OF_MONTH, datePicker.getDayOfMonth());                 
                calendar.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour());
                calendar.set(Calendar.MINUTE, timePicker.getCurrentMinute());
                calendar.set(Calendar.SECOND, 0);

                //---PendingIntent to launch activity when the alarm triggers---                    
                Intent i = new Intent("net.learn2develop.DisplayNotification");

                //---assign an ID of 1---
                i.putExtra("NotifID", 1);                                

                PendingIntent displayIntent = PendingIntent.getActivity(
                    getBaseContext(), 0, i, 0);               

                //---sets the alarm to trigger---
                alarmManager.set(AlarmManager.RTC_WAKEUP, 
                    calendar.getTimeInMillis(), displayIntent);
            }

请参阅此链接。http://mobiforge.com/developing/story/displaying-status-bar-notifications-Android

 类似资料:
  • 我想取消所有设置的警报。。。。。我已经搜索了很多,尝试了很多东西,但都没有成功。。。当我将闹钟设置为2分钟后,然后取消它时,2分钟后它仍会启动。。。。。任何帮助都将不胜感激。 创建警报的方法: 这是为了取消报警:

  • 我有一个应用程序,在指定的时间设置警报与TimePicker(24小时模式)。 我注意到,如果时间是23:00,而您将报警设置为01:00,AlarmManager会将其解释为已过日期。目前,我设置的警报如下所示: 正如你所看到的,该应用程序计算时差,如果时差为负值,则设置第二天的警报。这就产生了上面描述的bug。如何修复它? 当做 马库斯

  • 我每天上午11点使用显示通知。 当我在应用程序中设置警报时,警报会在短时间后触发。

  • 我遇到了麻烦,而试图设置一个准确的警报,只有时间选择器。我设置了一个带有如下处理程序的时间选择器: 计时器 不幸的是,当这样做时,警报会立即播放。我也试过用am.setalarmclock但是我不知道如何用它来使用RTC时间,你能帮我吗? 我已经读了很多线程,就像我正在尝试设置警报在特定的时间使用警报管理器,但警报立即启动?并从DatePicker和TimePicker中设置AlarmManage

  • 似乎根据实际经过的时间(与设备Hibernate时停止的正常运行时间相反)来对操作进行计时的唯一方法是AlarmManager。 是否有一种简单的方法来实现基于“壁钟”的延迟执行,例如通过一个围绕AlarmManager的开源包装器? 对于正常的计时操作,您可以使用一个处理程序,这就像这样一个简单的任务应该有的那样容易: 实现处理程序回调(无需注册) 实例化处理程序 调用sendEmptyMess

  • 我试图在我的Ubuntu上安装androidSDK,但当我试图在tools/bin/sdkmanager文件夹上运行SDK管理器时,我得到以下消息: 我的Ubuntu是最近安装的,除了Java8和Android Studio之外什么都没有。 我的SDK文件夹是默认的~/android/SDK。