2017-01-15 55 views
0

我正在开发一款应用程序,并且此应用程序需要在某些事件发生时向用户发出明确指示。Android:如何在手机处于睡眠状态时开始活动,类似于Viber接收呼叫活动

直到现在我只能做的事情是在通知区域发出通知。但是,我需要提供更明显的通知,类似于电话在来电时响铃的行为。

据我所知,android只允许应用程序发出通知的原因是为了防止应用程序干扰用户。但是,我正在开发的这个应用程序在用户的工作中起着至关重要的作用,所以我认为不应该给出如此强烈的通知。

我知道它应该是可行的,因为像Viber这样的应用程序可以开始类似于传入电话的活动,即使设备正在睡觉。

有谁知道如何做到这一点?

回答

1

只需添加一个粘性服务(它什么都不做)就解决了这个问题。添加服务可防止用户退出应用程序并将其从最近的应用程序列表中删除时终止进程。

由于该服务,即使没有UI可见,应用程序进程也在运行。在此状态下,如果GCM服务显示活动,则会显示该活动。

1

注册的广播接收器,并添加自定义动作将其说CustomAction。相反显示通知,抛出一个广播,并通过意图过滤器添加CustomAction。 现在广播听众的onReceive方法,检查 如果(intent.getAction.equals(“CustomAction”))Intent i = new Intent(context, YourActivity); context.startActivity(i);

对不起,我不是一个格式化的回答,我在开车,稍后将更新更多的澄清。

更新

在粘滞服务注册广播接收器。因此,如果杀死并重新注册广播寄存器,该服务可以自动启动。 不要忘记在onDestroy()服务方法和YourActivity注销广播接收器,当您的目的已解决。

+0

感谢您的答案,并按预期工作。您能解释为什么在广播接收器中创建的新活动会显示,但在GCM侦听器服务中创建的新活动(我先前显示通知的位置)在应用当前未运行时未显示? –

+0

我不太确定,但应用程序有可能被杀害。在这种情况下,在启动活动时,您必须有意设置类别Activity_Launcher。 –

0

你可以像Vinay提到的那样触发一个broascast。如果它仍然不起作用,请尝试使用唤醒锁。这些唤醒锁在睡眠模式下有助于唤醒设备。它将像强制唤醒一样行动,在唤醒锁后,您可以执行您的操作。

希望它有帮助..

谢谢。

相关问题