Android获取手机电话的状态

无论是拨打电话还是来电,系统广播都会发送相应的消息的,我们可以监听广播来获取手机电话状态

首先在manifest文件中配置自己的BroadcastReceiver,和声明权限。

在自己的BroadcastReceiver中做相应的处理。

import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.TelephonyManager;
import android.util.Log;

public class PhoneStatReceiver extends BroadcastReceiver {

	private static final String TAG = "PhoneStatReceiver";

	private static boolean incomingFlag = false;

	private static String incoming_number = null;

	@Override
	public void onReceive(Context context, Intent intent) {
		// 如果是拨打电话
		if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
			incomingFlag = false;
			String phoneNumber = intent
					.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
			Log.i(TAG, "call OUT:" + phoneNumber);
		}
		else {
			// 如果是来电
			TelephonyManager tm = (TelephonyManager) context
					.getSystemService(Service.TELEPHONY_SERVICE);

			switch (tm.getCallState()) {
				
				case TelephonyManager.CALL_STATE_RINGING:
					incomingFlag = true;// 标识当前是来电
					incoming_number = intent.getStringExtra("incoming_number");
					Log.i(TAG, "RINGING :" + incoming_number);
					break;
				
				case TelephonyManager.CALL_STATE_OFFHOOK: // 存在至少有一个呼叫拨号,活跃,或
															// //保留,并没有来电振铃或等待
					if (incomingFlag) {
						Log.i(TAG, "incoming ACCEPT :" + incoming_number);
					}
					break;
				
				case TelephonyManager.CALL_STATE_IDLE: // 闲置状态
					if (incomingFlag) {
						Log.i(TAG, "incoming IDLE");
					}
					break;
			}
		}
	}
}
暂无评论
  • 1:请一针见血的评论。
  • 2:评论需要审核通过后才能显示。
  • 3:评论字数限制在1000字以内。
  • 当前字数:0
热门文章
推荐文章
随机文章
关于本站 - 广告服务 - 版权声明 - 联系我们 - 友情链接 - 网站地图 - 帮助中心