我正在为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);
...
}
}
答案 0 :(得分:1)
如果您正在使用活动,则您的应用未运行后台。当新活动被带到堆栈顶部时,您的应用程序将暂停并放置在后台。要允许您的应用程序接收任何类型的通知,请尝试运行服务或创建广播接收器以获取您想要侦听的意图。这允许您的应用在不在堆栈顶部时进行处理。
<强>更新强>
所以你已经注册了一个广播接收器......这很好......但是......如果你在你的活动中注册它并且活动被杀死了,你的应用程序的引用和vm也是如此,意图不是接收。尝试使您的广播接收器独立于活动(即使系统使用清单调用它)。然后,即使您的应用程序已经死亡,您的广播接收器也可以接收意图,并启动您需要的内容。
替代方案是制作一个注册接收器的服务 - 服务可以在后台运行,但是你必须担心让你的服务足够轻,永远不会被杀死(更多的技巧)。最好的是选项1(减少开销)。