如何显示在后台运行的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);
...
}
}
如果您使用的是活动,则您的应用程序未运行该背景。当一个新的活动被带到栈顶时,你的应用程序暂停并放置在后台。为了让您的应用程序能够接收任何类型的通知,请尝试运行服务或创建广播接收器来提取您想要收听的意图。这可以让您的应用程序在不处于堆栈顶部时进行处理。
UPDATE
所以,你必须注册一个广播接收器......这是件好事......但如果你在活动注册并在活动被杀死,所以是参考和VM你的申请和意图没有收到。尝试让广播接收器独立于活动(即使用清单使系统调用它)。然后,即使您的应用程序已经死机,您的广播接收器也可以收到意图,并启动您所需的内容。
另一种方法是创建一个服务,注册您的接收器 - 服务可以在后台运行,但您必须担心使您的服务足够轻以至于不会被杀死(更多技巧)。最好的选择是1(少开销)。
我想你不理解我或我没有你。让我解释一下thiş的方式。我运行我的应用程序,之后我注册我的广播接收器来接收来电,它可以在我的应用程序中完美工作。如果我按下“主页”按钮,我的应用程序会转到后台,但我仍然可以接听电话,现在出现问题,我希望我的应用程序进入屏幕,以便我可以拒绝或接受电话。 – SherMi 2012-03-09 15:09:21
我明白你在说什么。当您的应用程序在后台运行时有人打电话给您,您的呼叫屏幕不会显示。再说一遍......在后台运行的应用程序适用于所有目的“死”,除非有一个广播接收器能够获得来电的意图,或者是一个正在检测它的服务。阅读更新的更多信息.... – jjNford 2012-03-09 15:14:15
哦,现在我知道你的意思了,谢谢你和我的理解 – SherMi 2012-03-09 16:14:07
你在谈论传入的SIP电话或VOICE电话吗? – slayton 2012-03-09 14:05:45