为android.intent.action.NEW_OUTGOING_CALL注册广播接收器并询问用户该怎么做?

时间:2012-02-22 14:50:33

标签: android android-asynctask broadcastreceiver

我知道如何实现一个新的拨出电话开始通知的BroadcastReceiver。 我也知道如何最终放弃调用并在应用程序中处理它。

我想知道的是,询问用户是否放弃它是否可靠? 据我所知,该应用程序从RroadcastReceiver返回的时间有限。 这个时间多久了?

你有没有实现过它?

修改

尝试实施它我意识到存在更大的问题。在BroadcastReceiver中,您无法显示对话框。形成文档:

  

特别是,您可能无法显示对话框或绑定到服务   在BroadcastReceiver中。对于前者,你应该使用   NotificationManager API。对于后者,你可以使用   Context.startService()向服务发送命令。

原因是您无法执行AsyncTask。我以为我会用信号来实现它,但你不能这样做,因为广播接收器是在主线程中启动的,你不能让它等待......

这是对的吗?

1 个答案:

答案 0 :(得分:0)

  

据我所知,应用程序从BroadcastReceiver返回的时间有限。这个时间有多长?

正式这段时间约为5秒--5秒后。系统主线程无法处理系统消息时Android应该抛出ANR(应用程序无响应)对话框并强行关闭您的应用程序。 更常见的是 - BroadcastReceiver onReceive()方法应该尽快完成。

如果您想向用户展示一些UI元素,我认为您应该为此开始自己的Activity