如何显示在后台运行的Android应用程序的呼叫屏幕

问题描述:

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

FIXED:

清单:添加以下代码的应用程序标签

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

接收器类:当我收到一个电话,它会打开我的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); 
      ...  
    } 

} 
+0

你在谈论传入的SIP电话或VOICE电话吗? – slayton 2012-03-09 14:05:45

如果您使用的是活动,则您的应用程序未运行该背景。当一个新的活动被带到栈顶时,你的应用程序暂停并放置在后台。为了让您的应用程序能够接收任何类型的通知,请尝试运行服务或创建广播接收器来提取您想要收听的意图。这可以让您的应用程序在不处于堆栈顶部时进行处理。

UPDATE

所以,你必须注册一个广播接收器......这是件好事......但如果你在活动注册并在活动被杀死,所以是参考和VM你的申请和意图没有收到。尝试让广播接收器独立于活动(即使用清单使系统调用它)。然后,即使您的应用程序已经死机,您的广播接收器也可以收到意图,并启动您所需的内容。

另一种方法是创建一个服务,注册您的接收器 - 服务可以在后台运行,但您必须担心使您的服务足够轻以至于不会被杀死(更多技巧)。最好的选择是1(少开销)。

+0

我想你不理解我或我没有你。让我解释一下thiş的方式。我运行我的应用程序,之后我注册我的广播接收器来接收来电,它可以在我的应用程序中完美工作。如果我按下“主页”按钮,我的应用程序会转到后台,但我仍然可以接听电话,现在出现问题,我希望我的应用程序进入屏幕,以便我可以拒绝或接受电话。 – SherMi 2012-03-09 15:09:21

+0

我明白你在说什么。当您的应用程序在后台运行时有人打电话给您,您的呼叫屏幕不会显示。再说一遍......在后台运行的应用程序适用于所有目的“死”,除非有一个广播接收器能够获得来电的意图,或者是一个正在检测它的服务。阅读更新的更多信息.... – jjNford 2012-03-09 15:14:15

+0

哦,现在我知道你的意思了,谢谢你和我的理解 – SherMi 2012-03-09 16:14:07