首页 > 解决方案 > 如何在 Android 中使用 AlarmClock.ACTION_DISMISS_ALARM

问题描述

这是应该通过标签解除警报的代码:

Intent intent = new Intent(AlarmClock.ACTION_DISMISS_ALARM);

    intent.putExtra(AlarmClock.EXTRA_ALARM_SEARCH_MODE, AlarmClock.ALARM_SEARCH_MODE_LABEL);
    //intent.putExtra(AlarmClock.ALARM_SEARCH_MODE_TIME,1);
    //intent.putExtra(AlarmClock.EXTRA_IS_PM, true);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.putExtra(AlarmClock.EXTRA_MESSAGE, "Label");
    if(intent.resolveActivity(getPackageManager()) != null){
        startActivity(intent);
    } else {
        Toast.makeText(SetAlarmActivity.this, "There is no app that support this action", Toast.LENGTH_SHORT).show();
    }

不幸的是,它只是打开了默认的闹钟应用程序,甚至没有关闭我需要的闹钟。如何使其正常工作?

标签: javaandroidalarmandroid-alarms

解决方案


该代码正在做它应该做的事情。它正在打开您指定的意图 - 闹钟应用程序。

我假设您通过 AlarmManager 设置了警报并想取消它?如果是这样,代码是:

AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent myIntent = new Intent(getApplicationContext(), YourBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
                                 getApplicationContext(), REQUEST_CODE, myIntent, 0);

alarmManager.cancel(pendingIntent);

确保请求代码与您开始时相同。

如果您实际上通过闹钟应用设置了闹钟并想取消它 - 我不确定是否有不涉及用户的方法。


推荐阅读