【发布时间】:2017-06-18 22:39:09
【问题描述】:
我希望我的警报管理器设置为特定时间以更改手机背景,但广播接收器没有做任何事情。你能帮忙告诉我为什么吗?
定时报警:
public void scheduleAlarm(Context context){
Intent intent = new Intent(context, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 18);
calendar.set(Calendar.MINUTE, 34);
am = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
am.setInexactRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent );
Toast.makeText(context, "Alarm set", Toast.LENGTH_LONG).show();
}
广播接收器:
@Override
public void onReceive(Context context, Intent intent){
PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
GrilledCheeseLookup.getGrilledCheeseJSON(grilledCheeseUrls, context);
Toast.makeText(context, "Alarm worked", Toast.LENGTH_LONG).show();
}
在清单中启用:
<receiver android:name=".AlarmReceiver" android:enabled="true" />
【问题讨论】:
-
你在清单中的正确位置有
<receiver>元素吗?即,在<application>标签之间,但不在其他任何东西之内,比如<activity>?您确定name属性指向正确的类,在正确的包中吗?假设您使用Toast来确定接收器是否正在运行,您确定onReceive()中的某些内容在显示之前没有失败吗? -
是的,它在应用程序标签内,但在任何其他标签(如
)之外。我在任何包中都没有 AlarmReceiver,所以应该没问题。而且我确信它在显示之前不会失败。 -
www.github.com/Akash14204 .. 项目学生预算跟踪器。我用过。你可以从那里取代码
-
您是否正在稍等片刻,让它有机会第一次开火?您是否在警报响起之前以某种方式强制停止应用程序?
-
是的,我在后台等待了一段时间。该应用程序是否必须处于活动状态才能正常工作?我举杯表示闹钟已设置。
标签: android broadcastreceiver alarmmanager android-pendingintent