Android: 闹钟结束或关闭时打开activity

Android: open activity when alarm clock is done or dismmised

用户通过 phone 库存时钟设置的每个闹钟都可以选择在闹钟关闭或结束时打开另一个应用程序(我不确定 Marshmallow 中是否添加了此功能,但我有它和我 运行 android M).

每个闹钟的默认值是 "none",但您可以选择邮件、天气、音乐应用程序等... 我想将我的应用程序添加到此列表中,以便在闹钟结束时直接打开它。

我的应用程序需要哪些设置才能显示在此列表中,以及如何将其设置为特定警报的默认应用程序(应指定哪些额外内容)

Intent i = new Intent(AlarmClock.ACTION_SET_ALARM);
i.putExtra(AlarmClock.EXTRA_MESSAGE, "New Alarm");
i.putExtra(AlarmClock.EXTRA_HOUR, 10);
i.putExtra(AlarmClock.EXTRA_MINUTES, 30);
startActivity(i);

所以似乎没有选项可以将您的应用程序添加到所需的列表中,这样用户就可以选择一个应用程序在警报解除或完成后立即打开。

我的另一个解决方案是通过广播接收器收听解散或完成的特定事件。这可能有点棘手,因为事件根据设备有多个名称。

我有 LG phone,所以我的事件是 com.lge.clock.alarmalert.stop,但您必须弄清楚每个设备的事件是什么。我看过一些与 this one 类似的主题。

这是我的收件人清单声明:

<receiver android:name=".Receiver.AlarmBroadcastReceiver">
    <intent-filter>
        <action android:name="com.android.deskclock.ALARM_DISMISS" />
        <action android:name="com.android.deskclock.ALARM_DONE" />
        <action android:name="com.lge.clock.alarmalert.stop" />
    </intent-filter>
</receiver>

deskclock 是某些设备上的默认时钟 运行,正如我提到的,我必须找到 LG phones 的动作并添加它。

收件人:

@Override
public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();
    if (action.equals("com.android.deskclock.ALARM_DISMISS") || action.equals("com.android.deskclock.ALARM_DONE") || action.equals("com.lge.clock.alarmalert.stop"))
    {
        ////Do Something
    }
}