如何在Android应用程序在后台运行时显示调用屏幕

时间:2012-03-09 13:53:29

标签: android screen call sip launch

我正在为Android 2.3.3制作一个SIP应用程序。我可以打电话给某人,当有人给我打电话时,会显示我的“来电屏幕”。但是当我的应用程序在后台运行并且有人打电话给我时,“呼叫屏幕”尚未启动。那么如何让它像普通来​​电一样启动。

FIXED:

清单:在应用程序标记中添加以下代码

  <receiver android:name=".ReceiverTest" android:enabled="true">
             <intent-filter>
                 <action android:name="com.example.INCOMING_CALL" />
             </intent-filter>
  </receiver>

Receiver class:当我接到电话时,它会打开我的Incomingcall页面

public class ReceiverTest extends BroadcastReceiver{

    @Override
    public void onReceive(Context arg0, Intent arg1) {  
        ...
        Intent nextPage= new Intent("com.example.IncomingPage");
        nextPage.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        arg0.startActivity(nextPage);   
            ...     
    }

}

1 个答案:

答案 0 :(得分:1)

如果您正在使用活动,则您的应用未运行后台。当新活动被带到堆栈顶部时,您的应用程序将暂停并放置在后台。要允许您的应用程序接收任何类型的通知,请尝试运行服务或创建广播接收器以获取您想要侦听的意图。这允许您的应用在不在堆栈顶部时进行处理。

<强>更新

所以你已经注册了一个广播接收器......这很好......但是......如果你在你的活动中注册它并且活动被杀死了,你的应用程序的引用和vm也是如此,意图不是接收。尝试使您的广播接收器独立于活动(即使系统使用清单调用它)。然后,即使您的应用程序已经死亡,您的广播接收器也可以接收意图,并启动您需要的内容。

替代方案是制作一个注册接收器的服务 - 服务可以在后台运行,但是你必须担心让你的服务足够轻,永远不会被杀死(更多的技巧)。最好的是选项1(减少开销)。