听取电话状态改变,两种不同的方式:BroadcastReceiver和TelephonyManager

时间:2012-05-11 15:03:57

标签: android

为什么要获得手机状态改变状态,android提供了两种方式:BroadcastReceiver带动作android.intent.action.PHONE_STATE,并使用TelephonyManager和PhoneStateListener?

内容有很大差异吗?或只更改通知方法?

我可以使用TelephonyManager.listen(PhoneStateListener listener,int events)注册一个侦听器并在onCallStateChanged()中处理状态,或者在onReceive()中注册一个BroadcastReceiver for action android.intent.action.PHONE_STATE并处理事件。 / p>

为什么以及何时优先采用其他方式?

1 个答案:

答案 0 :(得分:3)

在我看来,TelefonyManger在应用程序中起作用。 确保不要自己实例化它。 你应该使用它:

Context.getSystemService(Context.TELEPHONY_SERVICE)

如果您计划制作直接拨打电话的拨号器应用程序或直接在您的应用程序中使用手机的其他功能

,这似乎很有用

另一方面,如果您注册BroadcastReceiver,这意味着您希望了解手机状态,即使当您的应用程序不在前台时。可能是你正在制作跟踪手机使用情况的应用程序。

TelephonyManager on Android Developers