Android 侦听电话状态是否已更改,两种不同的方式:BroadcastReceiver和TelephonyManager

Android 侦听电话状态是否已更改,两种不同的方式:BroadcastReceiver和TelephonyManager,android,Android,为什么要更改手机状态,android提供了两种方式:带有action android.intent.action.phone_状态的BroadcastReceiver,以及带有PhoneStateListener的TelephonyManager 在内容上有实质性差异吗?还是只改变通知方式 我可以向TelephonyManager.listen(PhoneStateListener listener,int events)注册一个侦听器,并在onCallStateChanged()中处理状态,或

为什么要更改手机状态,android提供了两种方式:带有action android.intent.action.phone_状态的BroadcastReceiver,以及带有PhoneStateListener的TelephonyManager

在内容上有实质性差异吗?还是只改变通知方式

我可以向TelephonyManager.listen(PhoneStateListener listener,int events)注册一个侦听器,并在onCallStateChanged()中处理状态,或者为操作android.intent.action.PHONE_注册一个BroadcastReceiver,并在onReceive()中处理事件


为什么以及何时选择一种或另一种方式?

在我看来,
TelefonyManger
在应用程序中起作用。 确保不要自己实例化它。 您应将其用于:

Context.getSystemService(Context.TELEPHONY_SERVICE)
如果您计划制作一个拨号应用程序,该应用程序可以直接拨打电话或直接在您的应用程序中使用电话的其他功能,这似乎很有用

另一方面,如果您注册了
广播接收器
,这意味着您想知道手机的状态,即使当您的应用程序不在前台时。如果您正在制作一个跟踪电话使用情况的应用程序,则可能是这样