通过Android AlarmClock类在后台设置闹钟

5

我正在制作一个应用程序,其中设置闹钟是其中之一的特色。目前我不需要让应用程序成为独立的闹钟管理器。因此,我将使用AlarmClock类的ACTION_SET_ALARM通过以下代码设置闹钟:

Intent i = new Intent(AlarmClock.ACTION_SET_ALARM);
i.putExtra(AlarmClock.EXTRA_HOUR, hour);
i.putExtra(AlarmClock.EXTRA_MINUTES, minute);
i.putExtra(ALarmClock.EXTRA_MESSAGE, "Good Morning");
startActivity(i);

它能够很好地满足需求。但是,我的应用程序在按钮按下后自动打开系统默认的时钟设置,并设置闹钟。我不需要这种情况发生。 我需要按下按钮,设置闹钟(现在已经实现),但我不需要系统的时钟应用程序出现。我看到有一些应用程序可以做到我需要的功能。
请帮助我在后台设置闹钟/设置闹钟后不要打开时钟应用程序。 希望我已经清楚地传达了我的问题。

我到目前为止还没有使用过AlarmClock,但据我所见在API中,这是默认行为。你需要创建一个打开该意图的活动。如果你不想打开一个活动,也许你可以创建一个简单的活动并直接关闭它。https://developer.android.com/reference/android/provider/AlarmClock.html - Opiatefuchs
希望这可以帮到你!AlarmManager - zeeali
@Opiatefuchs 我尝试关闭活动并返回到我按下按钮设置闹钟的活动。但是,一旦执行了上述行,由于控件被转移到完全不同的应用程序(系统默认时钟应用程序),代码的其余部分就会超出范围。 - Indrajith Nandhikeswaran
@zeeali 谢谢你的分享。但是该帖子建议使用 alarmManager,我现在正在使用它。建议的代码适用于使用 broadcastReceiver 将应用程序制作为独立的闹钟应用程序(在闹钟时间启动活动,解除、打盹等)。我现在不想引入所有这些功能。现在,我需要通过 Android 系统本身的按钮单击来设置闹钟。并且让系统处理取消、打盹等,但在设置闹钟后(通过按按钮),会打开时钟应用程序。 - Indrajith Nandhikeswaran
1个回答

8

通过阅读API,我找到了一种方法:)。你需要将EXTRA_SKIP_UI设置为true。

    Intent i = new Intent(AlarmClock.ACTION_SET_ALARM);
    i.putExtra(AlarmClock.EXTRA_SKIP_UI, true);
    i.putExtra(AlarmClock.EXTRA_HOUR, hour);
    i.putExtra(AlarmClock.EXTRA_MINUTES, minute);
    i.putExtra(AlarmClock.EXTRA_MESSAGE, "Good Morning");
    startActivity(i);

如API中所述

如果为true,则要求应用程序绕过任何中间UI。如果为false,则应用程序可以显示中间UI,例如确认对话框或设置。

我亲自测试了一下,如果使用此EXTRA,则会弹出Toast,表示已设置闹钟而无需使用其他应用程序。

编辑

仅为完整起见,您需要添加权限:

<uses-permission android:name="com.android.alarm.permission.SET_ALARM"></uses-permission>

我最开始忘记设置这个权限,令人惊讶的是它在模拟器中仍然可以工作,但在设备上崩溃了。


啊!我不知道在阅读文档时是怎么错过了那个。谢谢你。它起作用了! - Indrajith Nandhikeswaran

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