`
dowhathowtodo
  • 浏览: 775418 次
文章分类
社区版块
存档分类
最新评论

Android Telephony API

 
阅读更多

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics