如何使用 AlarmClock 在 android 中设置闹钟的日期

Posted

技术标签:

【中文标题】如何使用 AlarmClock 在 android 中设置闹钟的日期【英文标题】:How to set day of alarm in android by using AlarmClock 【发布时间】:2013-07-12 09:43:24 【问题描述】:

我们可以在android中创建有意图的警报

        Intent i = new Intent(AlarmClock.ACTION_SET_ALARM); 
    i.putExtra(AlarmClock.EXTRA_MESSAGE, "New Alarm"); 
    i.putExtra(AlarmClock.EXTRA_HOUR, 23); 
    i.putExtra(AlarmClock.EXTRA_MINUTES, 11); 

我们想在创建警报时添加 day 属性。但是,AlarmClock 不包含有关“Extra_Day_Week”的属性,因此我们没有设置闹钟日期。你有什么想法可以通过使用意图 ve 闹钟来解决这个问题

感谢您的创意回复

【问题讨论】:

AlarmClock 提供程序无法指定日期。您是在尝试让已安装的警报应用程序在指定时间开始响铃,还是希望在这样的时间发生时收到通知(例如,以便您可以启动自己的面向用户的警报?)在后一种情况下,你会使用AlarmManager 而不是AlarmClock 这很奇怪,因为android中的默认应用程序提供7天的警报(未指定时间仅购买7天)。 Alarmclock 允许我们更改小时和分钟,为什么 Alarmclock 不允许更改 7 天的闹钟。 AlarmClock 是内容提供者,独立于默认应用程序。不同的第三方应用程序(和系统应用程序)可以通过处理一些意图来选择使用AlarmClock 内容提供程序。也许如果您使用用例编辑问题,人们将能够为您指出正确的方向。 【参考方案1】:

希望对您有帮助:

    Calendar cal = Calendar.getInstance();

    cal.setTimeInMillis(System.currentTimeMillis());
    cal.clear();
    cal.set(2012,2,8,18,16);// instead of these lines you can use below lines in comment

    //cal.set(Calendar.HOUR_OF_DAY, 16);
    //cal.set(Calendar.MINUTE, 25);
    //cal.set(Calendar.SECOND, 0);
    //cal.set(Calendar.MILLISECOND, 0);

    AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(this, AlarmReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);

    alarmMgr.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);

【讨论】:

我们尝试了这段代码,但它可以正常工作,它不会向android中的默认警报应用程序添加任何警报。通常,我们共享的代码会在 android 的默认警报应用程序中设置警报。我们看到了。感谢您的回复 尝试编辑的代码哥们...并确保您已在 AndroidManifest.xml 中授予权限 @Lucky:哥们把你设置的闹钟代码保存在一个线程中,每隔 4 小时执行一次该线程。它会每天设置你的闹钟 6 次。【参考方案2】:

您可能忘记了在 AndroidManifest.xml 中添加的权限

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

【讨论】:

我们说过我们可以在没有 day 属性的情况下创建警报。我们在清单中添加了权限。感谢您的回复【参考方案3】:

该属性名为EXTRA_DAYS:

你可以这样使用它:

ArrayList<Integer> alarmDays = new ArrayList<>();
alarmDays.add(Calendar.MONDAY);
alarmDays.add(Calendar.WEDNESDAY);
alarmDays.add(Calendar.FRIDAY);

Intent i = new Intent(AlarmClock.ACTION_SET_ALARM);
i.putExtra(AlarmClock.EXTRA_DAYS, alarmDays);
i.putExtra(AlarmClock.EXTRA_HOUR, 23);
i.putExtra(AlarmClock.EXTRA_MINUTES, 11);
i.putExtra(AlarmClock.EXTRA_MESSAGE, "New Alarm");    
i.putExtra(AlarmClock.EXTRA_VIBRATE, true);

startActivity(i);

任何其他用户发现此问题,请不要忘记请求许可! (在清单中)

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

【讨论】:

以上是关于如何使用 AlarmClock 在 android 中设置闹钟的日期的主要内容,如果未能解决你的问题,请参考以下文章

通过背景中的android AlarmClock 类设置闹钟

Android AlarmClock ACTION_SET_ALARM 意图产生异常

如何运行 Android 默认闹钟应用程序?

如何使用闹钟类设置闹钟

使用自定义 Google Now 命令启动 Android 应用

使用意图设置闹钟(如闹钟)