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);我试过这个,效果很好…请在你这边试一下