【发布时间】:2020-11-25 19:24:41
【问题描述】:
我正在尝试使用警报管理器在特定时间(每天上午 8:00)向用户发送通知。 但我的代码不正确请帮我显示通知
我的 MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlarmController al=new AlarmController(this);
al.StartAlarm();
}
我的闹钟控制器
public class AlarmController {
private Context m_Context;
private AlarmManager mgr;
private static final long PERIOD = 1000 * 30;
public AlarmController(Context context){
m_Context = context;
mgr = (AlarmManager)m_Context.getSystemService(Context.ALARM_SERVICE);
}
public void StartAlarm(){
Intent i = new Intent(m_Context, OnAlarmReceiver.class);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY,8);
PendingIntent pi=PendingIntent.getBroadcast(m_Context, 0,i, PendingIntent.FLAG_UPDATE_CURRENT);
mgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, pi);
Log.i("AlarmController", "StartAlarm");
}
public void StopAlarm(){
Intent i = new Intent(m_Context, OnAlarmReceiver.class);
PendingIntent pi=PendingIntent.getBroadcast(m_Context, 0,i, PendingIntent.FLAG_UPDATE_CURRENT);
mgr.cancel(pi);
Log.i("AlarmController", "StopAlarm");
}
}
和 OnAlarmReceiver
public class OnAlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
context.startService(new Intent(context, AppService.class));
} }
AppService
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "start job");
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("My notification")
.setContentText("از اپ سرویس!");
int mNotificationId = 001;
NotificationManager mNotifyMgr =
(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mNotifyMgr.notify(mNotificationId, mBuilder.build());
Log.i(TAG, "stop job");
return START_STICKY;
}
【问题讨论】:
-
您需要为您的日历实例设置更具体的主题。当您获得日历实例时,默认情况下它具有当前时间。在这里,您只修改一天中的时间。您还需要设置分钟。设置未来时间并确保警报是否触发。
-
@SanjeetAjnabee 非常感谢你
标签: android notifications alarmmanager