警报管理器和未决意图取消不起作用

Alarm Manager and Pending Intent Cancel Not Working

我从 Activity 安排闹钟。

   private AlarmManager mAlarmManager;  
            mAlarmManager = (AlarmManager) ACT_ActiveSession.getAppContext()
                    .getSystemService(Context.ALARM_SERVICE);
            Intent intent = new Intent(mContext, LocalNotification.class);
            intent.putExtra("alertBody", "");
            intent.putExtra(K.SESSIONID, "");
            intent.putExtra("TIME", "");
            intent.putExtra("BATCHNO","");
            intent.putExtra("REQUEST_CODE", "");
            PendingIntent pendingIntent = PendingIntent.getBroadcast(
                    ACT_ActiveSession.getAppContext(), REQUEST_CODE, intent, 0);
            mAlarmManager.setExact(AlarmManager.RTC_WAKEUP, finishTime,
                    pendingIntent);
            // alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, finishTime,
            // (1 * 1000), pendingIntent);

intent.putExtra("",""); 仅用于 BroadcastReceiver

上的某些任务

并从片段取消警报

private AlarmManager mAlarmManager; 

    mAlarmManager = (AlarmManager) mActivity
                            .getSystemService(Context.ALARM_SERVICE);
                    Intent updateServiceIntent = new Intent(mActivity,
                            ACT_Home.class);

                    PendingIntent pendingUpdateIntent = PendingIntent.getBroadcast(
                            mActivity, REQUEST_CODE,
                            updateServiceIntent, 0);
                     pendingUpdateIntent.cancel();
                    // Cancel alarms
                    if (pendingUpdateIntent != null) {
                        mAlarmManager.cancel(pendingUpdateIntent);
                        Log.e("", "alaram canceled ");
                    } else {
                        Log.e("", "pendingUpdateIntent is null");
                    }

但是警报管理器没有被取消。 这里我更改了mActivity = MyActivity的static getApplicationContext();并且还更改了不同的Flags和不同的Context.

我也参考了很多答案。 但是任何代码都不起作用。 Link1 Link2 Link3

请尽快给我解决方案。 并为我糟糕的英语道歉。

您使用此 Intent 创建警报:

Intent intent = new Intent(mContext, LocalNotification.class);

但您尝试使用此 Intent:

取消它
Intent updateServiceIntent = new Intent(mActivity, ACT_Home.class);

这些 Intent 不匹配,因此取消不执行任何操作。如果你想取消闹钟,你需要在取消调用中使用一个 Intent 来匹配你用来安排闹钟的 Intent