从BroadCastReceiver启动应用程序(NEW_OUTGOING_CALL并不总是有效)

时间:2013-06-15 09:22:51

标签: java android broadcastreceiver dialing

好吧,我写了一个应用程序,首先拨打一个特定的号码,我使用了 NEW_OUTGOING_CALL (广播接收器)来捕捉拨号事件。 到目前为止,AndroidManifest.xml上的广播接收器类似于以下代码:

<receiver android:name=".CustomBroadCastReceiver">
    <intent-filter>
         <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
    </intent-filter>
</receiver>

问题在于,当我在新系统上尝试它时,它首先不起作用,但经过几次测试后,它就开始工作了。 我检查了android日志,并认为它甚至没有注册为广播接收器。 我在Android参考中找不到这种行为的原因,并想知道是否有人遇到同样的问题并找到了解决方案,

请考虑这个广播的接收器被认为是我的应用程序的起始触发器

我还读过一些关于已停止的包的内容,我想知道它是否与我的情况有关,如果有,是否有办法在AndroidManifest.xml上设置标志,如FLAG_INCLUDE_STOPPED_PACKAGES

======被修改==

我第一次在 adb shell

上调用以下命令
am broadcast -n com.package.name/.StartApp

此行出现在模拟器的日志

06-15 11:17:53.216: INFO/ActivityManager(74): Start proc com.package.name for broadcast com.package.name/.StartApp: pid=2153 uid=10041 gids={3003}

然后广播接收器在模拟器上注册,看起来我的应用程序需要启动才能注册广播接收器

1 个答案:

答案 0 :(得分:3)

我在android文档中找不到任何东西,但是在不同的设备上花了几个小时测试这个案例后,我发现广告接收器只在执行应用程序后注册。因此,显然必须在安装后启动一项活动,然后一切都运行良好。