仅当应用已经 运行 时获取 PHONE_STATE 事件

Get PHONE_STATE event only when app is already running

我有一个应用程序,我为其添加了一些功能,用于在来电时(phone 响铃或接听)。我这样做是通过创建一个 BroadcastReceiver 这样的:

 <receiver android:name="mypackage.PhoneReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.PHONE_STATE" >
                </action>

            </intent-filter>
        </receiver>

一切正常,但问题是即使我的应用程序不是 运行,它也会被调用,这是有道理的,但这会触发我的应用程序上的各种其他事情。

所以问题是,只有当我的应用程序(或我拥有的服务)是 运行 时,我才能触发 BroadcastReceiver 吗?或者让我的 Application.onCreate() 以某种方式知道它是为 BroadcastReceiver 创建的并跳过它通常做的所有其他事情?

谢谢。

您可以从清单中取出接收器,并以编程方式在您的代码中注册它。这样做,您可以随时 register/unregister。