Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在后台通过android AlarmClock类设置闹钟_Java_Android_Android Intent_Alarm - Fatal编程技术网

Java 在后台通过android AlarmClock类设置闹钟

Java 在后台通过android AlarmClock类设置闹钟,java,android,android-intent,alarm,Java,Android,Android Intent,Alarm,我正在制作一个应用程序,设置闹钟是其中一个功能。我现在不需要该应用程序成为一个独立的报警管理器。因此,我使用以下代码通过类的ACTION\u SET\u alarm设置报警: Intent i = new Intent(AlarmClock.ACTION_SET_ALARM); i.putExtra(AlarmClock.EXTRA_HOUR, hour); i.putExtra(AlarmClock.EXTRA_MINUTES, minute); i.putExtra(ALarmClock.E

我正在制作一个应用程序,设置闹钟是其中一个功能。我现在不需要该应用程序成为一个独立的报警管理器。因此,我使用以下代码通过类的ACTION\u SET\u 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);
它可以很好地满足要求。但我的应用程序会打开系统的默认时钟柱,按下按钮后自动设置闹钟。我不需要这样。 我需要按下按钮,闹钟需要设置(现在也在发生),但我不需要系统的时钟应用程序来显示。我看到一些应用程序可以满足我的要求

请帮助我在后台设置闹钟/设置闹钟后不要打开时钟应用程序。
希望我已经清楚地表达了我的问题。

我通过阅读API找到了一种方法:)。您必须使用设置为true的EXTRA_SKIP_UI

    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,如确认 对话框或设置

我自己测试过它,如果使用这个额外的,它会提示一个祝酒词:闹钟是在不使用任何其他应用程序的情况下设置的

编辑 为了完整起见,您需要添加权限:

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


我第一次忘记设置这个权限,令我惊讶的是,它在emulator中仍然工作,但在设备中崩溃。

直到现在我还没有使用AlarmClock,但据我在API中看到的,这是默认行为。你必须做一个基于这个意图的活动。如果你不想打开一个活动,也许你可以做一个简单的活动并直接关闭它。我希望这对你有帮助@Opiatefuch我尝试关闭活动,并返回到活动中,按下按钮设置报警。但一旦执行了上述代码行,其余的代码就超出了范围,因为控制权被转移到了一个完全不同的应用程序(系统的默认时钟应用程序)。@zeeali感谢您的分享。但是线程建议使用alarmManager,我现在正在这样做。建议的代码有助于使用broadcastReceiver使应用程序成为一个独立的报警应用程序(在报警时间启动活动、关机、打盹等)。我现在不想引入所有这些功能。现在,我需要通过安卓系统本身设置按钮点击报警。并让系统处理取消、打盹等情况,但在设置闹钟后打开时钟应用程序(通过按下按钮)。啊!我想知道我在阅读文档时怎么会错过这个。非常感谢。成功了!