Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.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
Android 安卓10+;上服务的操作设置报警;_Android_Alarmmanager_Android 10.0 - Fatal编程技术网

Android 安卓10+;上服务的操作设置报警;

Android 安卓10+;上服务的操作设置报警;,android,alarmmanager,android-10.0,Android,Alarmmanager,Android 10.0,我有一个应用程序,它有闹钟这样的功能。 对于一些人来说,出于某种原因,使用外部闹钟更方便。因此,对于这些人,我有一个选择“使用外部闹钟”。 我以前从Android 10之前的服务开始,如下所示: ... val intent = Intent(AlarmClock.ACTION_SET_ALARM).apply { putExtra(AlarmClock.EXTRA_MESSAGE, message) putExtra(Alar

我有一个应用程序,它有闹钟这样的功能。 对于一些人来说,出于某种原因,使用外部闹钟更方便。因此,对于这些人,我有一个选择“使用外部闹钟”。 我以前从Android 10之前的服务开始,如下所示:

...
 
        val intent = Intent(AlarmClock.ACTION_SET_ALARM).apply {
            putExtra(AlarmClock.EXTRA_MESSAGE, message)
            putExtra(AlarmClock.EXTRA_HOUR, calendar.hourOfDay)
            putExtra(AlarmClock.EXTRA_MINUTES, calendar.minute)
            putExtra(AlarmClock.EXTRA_SKIP_UI, true)
            putExtra(AlarmClock.EXTRA_VIBRATE, appPreferences.alarmVibration)
            ringtone?.let {
                putExtra(AlarmClock.EXTRA_RINGTONE, it)
            }
            flags = Intent.FLAG_ACTIVITY_NEW_TASK
        }
        if (intent.resolveActivity(appContext.packageManager) != null) {
            appContext.startActivity(intent)
...

自Android 10以来,存在一些限制:

因此,我无法再启动启用外部警报的活动,这非常烦人

有人知道如何解决这个问题吗


目前,我正在考虑要求用户授予SYSTEM_ALERT_WINDOW权限,但这似乎是一种错误的方式。无论如何,由于Android Go的限制,它并不能解决所有问题。

对于Android 9及以上版本,您可以使用除后台服务之外的其他Android服务,因为它们对设备和用户更为优化,或者您可以将服务作为常规服务使用。

“我曾经从我的服务启动操作设置报警”--为什么这是通过服务而不是用户界面来完成的?毕竟,从您的服务中,您不知道用户在前台做什么,并且用户可能会非常不高兴您在该时间点用此闹钟活动打断他们。因为当一个闹钟被触发时,我必须在不启动应用程序的情况下安排下一个闹钟。我使用AlarmClock.EXTRA_SKIP_UI来防止打断用户正在做的事情“我使用AlarmClock.EXTRA_SKIP_UI来防止打断用户正在做的事情”--你假设每个闹钟都会遵守这个额外的规则。无论如何,用户可以选择是否使用这个选项。如果设备上的闹钟对他们正常工作,他们可以选择启用它。他们要求的,所以我不想讨论我为什么要这么做。我只是想知道是不是possible@CommonsWare想象一下,有人用我的应用程序来决定何时起床,但他有他最喜欢的21点和妓女闹钟应用程序,并想用它来唤醒他。ACTION_SET_ALARM为这些用户工作了多年,现在他们非常不高兴,因为这个限制谢谢你的回答,但我问的是关于启动活动,而不是你用flags:intent.addFlags(intent.FLAG_activity_NEW_TASK | intent.FLAG_activity_CLEAR_TOP)尝试过的服务;无法解释,但它解决了我从widget打开应用程序的问题