【问题标题】:Android: open activity when alarm clock is done or dismmisedAndroid:闹钟完成或关闭时打开活动
【发布时间】:2016-06-27 17:18:23
【问题描述】:

用户通过手机库存时钟设置的每个闹钟都可以选择在闹钟解除或完成时打开另一个应用程序(我不确定 Marshmallow 中是否添加了此功能,但我有它并且我运行 android M)。

每个闹钟的默认值为“无”,但您可以选择邮件、天气、音乐应用程序等... 我想将我的应用程序添加到此列表中,以便在警报完成后直接打开它。

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

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);

【问题讨论】:

  • AlarmClock.ACTION_SET_ALARM 用于设置一天中给定时间的警报,而不是在警报解除时打开另一个活动。您简明扼要地想要实现什么目标?
  • 我在问题中描述了目标 - 我想在警报完成或解除时立即打开一个活动。有一个本机功能(可能会在 android M 中添加,但我不确定),您可以在闹钟完成后选择要打开的特定应用程序,我想将我的应用程序添加到此列表中。
  • "我想在闹钟响起或解除时立即打开一个活动。"这需要首先从应用程序设置警报。如果您在股票时钟的闹钟响起时调用您的活动,目前还没有本机功能。
  • 我不会接受诸如“不可能”之类的事情,我的第二种方法是使用广播接收器收听解雇或完成事件..

标签: android alarmmanager


【解决方案1】:

因此,似乎没有选项可以将您的应用添加到所需的列表中,从而允许用户在警报解除或完成后立即选择要打开的应用。

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

我有 LG 手机,所以我的事件是 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 手机的操作并添加它。

接收者:

@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
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多