安卓学习日记——TelephonyManager
- TelephonyManager简介
TelephonyManager类提供了对设备上的电话服务信息的访问。应用程序可以使用这个类中的方法来确定电话服务和状态,以及访问某些类型的用户信息。应用程序也可以注册一个侦听程序来接收通知的电话状态改变。
电话服务管理器的API方法
private void testTelephoneManager() {
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
System.out.println("电话状态=" + tm.getCallState());
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
return;
}
System.out.println("唯一的设备ID=" + tm.getDeviceId());
System.out.println("设备的软件版本号="+tm.getDeviceSoftwareVersion());
System.out.println("手机号="+tm.getLine1Number());
System.out.println("获取ISO标准的国家码·即国际长途区号="+tm.getNetworkCountryIso());
System.out.println("当前使用的网络类型="+tm.getNetworkType());
System.out.println("手机类型="+tm.getPhoneType());
System.out.println("SIM的状态信息="+tm.getSimState());
System.out.println("唯一的用户ID="+tm.getSubscriberId());
System.out.println("SIM卡的***="+tm.getSimSerialNumber());
System.out.println("服务商名称="+tm.getSimOperatorName());
}
权限设置
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
使用虚拟机测试效果
电话服务的监听器
private static class MyPhoneStateListener extends PhoneStateListener{
@Override
public void onCallStateChanged(int state, String phoneNumber) {
super.onCallStateChanged(state, phoneNumber);
switch (state){
case TelephonyManager.CALL_STATE_RINGING:
System.out.println("正在响铃");
break;
case TelephonyManager.CALL_STATE_IDLE:
System.out.println("挂机状态");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
System.out.println("正在接听电话...");
break;
}
}
}
tm.listen(new MyPhoneStateListener(),PhoneStateListener.LISTEN_CALL_STATE);
效果如下