ALFA DeV工作室原创文章如转载,请注明:转载自博客原文地址:http://blog.csdn.net/kongre/article/details/6748225
Android Telephony API提供了一种对基本电话信息进行监听的方式,不断可以获取网络类型,连接状态等基本信息,也可以用来对电话号码字符串进行操作。
秘籍一、使用Telephony Manager
Android Telephony API当中有一个TelephonyManager的类,这个类事实上代表的是Android的一种系统服务,用来访问设备上的Telephony Services的信息。其中有一些Telephony Services的信息是有权限保护的,所以我们在访问之前必须声明使用相应的权限。
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
public class TelephonyActivity extends Activity {
TextView tv1;
TelephonyManager telManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv1 = (TextView)findViewById(R.id.tv1);
telManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
StringBuilder sb = new StringBuilder();
sb.append("deviceid:").append(telManager.getDeviceId()).append("\n");
sb.append("Line number:").append(telManager.getLine1Number()).append("\n");
sb.append("Network Country ISO:").append(telManager.getNetworkCountryIso()).append("\n");
sb.append("Network Operator:").append(telManager.getNetworkOperator()).append("\n");
sb.append("Network Operator Name:").append(telManager.getNetworkOperatorName()).append("\n");
sb.append("Sim Country ISO:").append(telManager.getSimCountryIso()).append("\n");
sb.append("Sim Operator:").append(telManager.getSimOperator()).append("\n");
sb.append("Sim Operator Name:").append(telManager.getSimOperatorName()).append("\n");
sb.append("Sim Serial Number:").append(telManager.getSimSerialNumber()).append("\n");
tv1.setText(sb);
}
}
真机运行效果图如下:秘籍二、监听电话状态
PhoneStateListener提供了对电话状态进行监听的功能。举例来说,要对一个来电的电话状态进行监听。TelephonyManager需要注册一个PhoneStateListener对PhoneStateListener.LISTEN_CALL_STATE事件进行监听。来电的状态分为三种:
1.CALL_STATE_IDLE:Device not being used for a phone call
2.CALL_STATE_RINGING:Device receiving a call
3.CALL_STATE_OFFHOOK:Call in progress
你可以使用Logcat显示这些不同的状态无论是来电还是去电的时候。
public class HardwareTelephony extends Activity {
TextView tv1;
TelephonyManager telManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv1 = (TextView)findViewById(R.id.tv1);
telManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
telManager.listen(new TelListener(), PhoneStateListener.LISTEN_CALL_STATE);
}
private class TelListener extends PhoneStateListener{
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
Log.v("Phone State","state:" + state);
switch(state){
case TelephonyManager.CALL_STATE_RINGING:
Log.v("Phone State","incoming number:" + incomingNumber + " received");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.v("Phone State","incoming number:" + incomingNumber + " picked up");
break;
case TelephonyManager.CALL_STATE_IDLE:
Log.v("Phone State", "incoming number:" + incomingNumber + " ended");
break;
default:
break;
}
}
}
}
最后如果你还是觉得我写的不够详细 看的不够爽 不要紧我把源代码的下载地址贴出来 欢迎大家一起讨论学习ALFA DeV工作室希望可以和大家一起进步。
下载地址:http://download.csdn.net/source/3575268