TelephonyManager是Android系统中的一个重要的类,它可以让我们获取到设备的电话信息,并可以控制设备的电话状态。我们需要获取TelephonyManager实例,可以通过Context.getSystemService(Context.TELEPHONY_SERVICE)来获取:
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
获取设备信息
TelephonyManager提供了一些方法,可以获取设备的信息:
- getDeviceId:获取设备的唯一标识,通常是IMEI号。
- getSubscriberId:获取用户的唯一标识,通常是IMSI号。
- getLine1Number:获取SIM卡的电话号码。
- getSimSerialNumber:获取SIM卡的序列号。
- getSimCountryIso:获取SIM卡的国家码。
- getNetworkOperatorName:获取运营商的名字。
控制电话状态
TelephonyManager还提供了一些方法,可以控制设备的电话状态:
- endCall:挂断电话。
- call:拨打电话。
- listen:监听电话状态。
- answerRingingCall:接听正在响铃的电话。
- silenceRinger:静音来电铃声。
监听电话状态
TelephonyManager还提供了一个Listener,可以监听电话的状态变化:
telephonyManager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
PhoneStateListener可以监听的状态:
- CALL_STATE_IDLE:电话闲置状态。
- CALL_STATE_RINGING:电话响铃状态。
- CALL_STATE_OFFHOOK:电话接通状态。
当电话状态发生变化时,onCallStateChanged方法会被调用:
public void onCallStateChanged(int state, String incomingNumber) { switch (state) { case TelephonyManager.CALL_STATE_IDLE: // 电话闲置状态 break; case TelephonyManager.CALL_STATE_RINGING: // 电话响铃状态 break; case TelephonyManager.CALL_STATE_OFFHOOK: // 电话接通状态 break; } }
TelephonyManager可以让我们获取到设备的电话信息,并可以控制设备的电话状态,从而让我们实现更多的功能。