闹钟管理器和待定意图取消不起作用

3

我像这样从活动中设置闹钟。

   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 的静态 getApplicationContext();,同时改变了不同的标志和不同的上下文。 我还参考了很多答案。但是任何代码都不起作用。链接1 链接2 链接3 请尽快给我解决方案,并为我的糟糕英语道歉。
1个回答

1
您可以使用以下的Intent来创建闹钟:

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

但是您可以使用以下代码取消它:Intent
Intent updateServiceIntent = new Intent(mActivity, ACT_Home.class);

这些 Intent 不匹配,因此取消操作无效。如果您想要取消闹钟,需要在取消调用中使用与您用于安排闹钟的 Intent 相匹配的 Intent


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接