Ind*_*ran 5 java android alarm android-intent
我正在制作一个应用程序,设置闹钟是其中一项功能。我暂时不需要该应用程序成为独立的警报管理器。因此,我使用以下代码通过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);
Run Code Online (Sandbox Code Playgroud)
它工作得很好,满足了要求。但我的应用程序会打开系统的默认时钟柱,在按下按钮时自动设置闹钟。我不需要这种事发生。我需要按下按钮,需要设置闹钟(现在也正在发生),但我不需要系统的时钟应用程序显示。我见过一些应用程序可以满足我的要求。
请帮助我在后台设置闹钟/设置闹钟后不要打开时钟应用程序。希望我已经清楚地表达了我的问题。
我通过阅读 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);
Run Code Online (Sandbox Code Playgroud)
就像 API 中所述
如果为 true,则要求应用程序绕过任何中间 UI。如果为 false,应用程序可能会显示中间 UI,例如确认对话框或设置。
我自己测试了一下,如果使用这个EXTRA,它会提示一个Toast,表明闹钟已设置,而无需使用任何其他应用程序。
为了完整起见,您需要添加权限:
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"></uses-permission>
Run Code Online (Sandbox Code Playgroud)
我首先忘记设置此权限,令我惊讶的是它在模拟器中仍然有效,但在设备中崩溃了。