Android Alarmmanager未触发报警
我试图创建一个每日警报来发送通知,但不知怎么的,通知没有来。 我已经读了很多关于它的书,但是没有一个解决方案是有用的 创建报警功能:Android Alarmmanager未触发报警,android,alarmmanager,android-alarms,Android,Alarmmanager,Android Alarms,我试图创建一个每日警报来发送通知,但不知怎么的,通知没有来。 我已经读了很多关于它的书,但是没有一个解决方案是有用的 创建报警功能: public static void createAlarm (Context ctx, String filename, boolean must_create_alarm) { // CreateAlarm is called from main activity onCreate method. // Hence, u
public static void createAlarm (Context ctx, String filename, boolean must_create_alarm)
{
// CreateAlarm is called from main activity onCreate method.
// Hence, using SharedPreference to set alarm only once.
// When need to explicitly set the alarm. Client pass
// must_create_alarm boolean to true
SharedPreferences pref = ctx.getSharedPreferences(filename, Context.MODE_PRIVATE);
boolean create_alarm = pref.getBoolean("MY_ALARM", true);
create_alarm |= must_create_alarm;
if (create_alarm == false) {
Log.w ("ALARM INFO","ALARM ALREADY CREATED");
return;
}
Log.w ("ALARM INFO","CREATED FRESH ALARAM");
pref.edit()
.putBoolean("MY_ALARM", false).commit();
// Set the alarm to start at exactly 11:00 a.m.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 21);
AlarmManager alarmMgr = (AlarmManager) ctx.getSystemService(ctx.ALARM_SERVICE);
Intent _alarmIntent = new Intent(ctx, AppBroadCastReceiver.class);
_alarmIntent.setAction("android.intent.action.ALARM_KICK_OFF");
PendingIntent pendingIntent = PendingIntent.getBroadcast(ctx, 1, _alarmIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
Log.w("myApp", "SETTING ALARM");
alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, pendingIntent); // Setting notification every DAY
}
AppBroadCastReceiver类:
public class AppBroadCastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
Log.w("myApp", "AppBroadCastReceiver DEVICE REBOTTED");
GeneralUtility.createAlarm(context, "designersarres.designersarees", true);
}
else if (intent.getAction().equals("android.intent.action.ALARM_KICK_OFF")) {
// Alarm is fired. Send notification
Log.w("myApp", "AppBroadCastReceiver ALARM");
GetNotificationMsg msg = new GetNotificationMsg(context);
msg.sendNotification();
}
}
}
AndroidManifest.xml:
<!-- Register the Broadcast Receiver -->
<receiver android:name="designersarres.designersarees.AppBroadCastReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.ALARM_KICK_OFF"/>
</intent-filter>
</receiver>
这几天我一直在忙这个
请让我知道我在这里错过了什么或做错了什么
如果需要在此处发布更多代码,请告诉我。尝试在属性alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis()+500,AlarmManager.INTERVAL_DAY,PendingContent)中添加几毫秒的额外时间;问题在于line calendar.set(calendar.HOUR\u OF_DAY,21);这将根据IST设置晚上9点的闹钟…通知将在晚上9点发出,,,,我尝试重复时间半小时。它是第一次出现,但没有重复。alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),5000,PendingEvent);我试过这个,效果很好…请在你这边试一下