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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值