首先,在 AndroidManifest.xml 文件中添加以下权限:
然后,创建一个 BroadcastReceiver 广播接收器,在接收到电话状态变化时进行处理。代码如下:
public class PhoneCallReceiver extends BroadcastReceiver {
private static final String TAG = "PhoneCallReceiver";
@Override
public void onReceive(Context context, Intent intent) {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if (telephonyManager == null) {
return;
}
String phoneNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
int state = telephonyManager.getCallState();
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
// 有电话呼入
Log.d(TAG, "Phone ringing, incoming number: " + phoneNumber);
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
// 接听电话时
Log.d(TAG, "Phone off hook, incoming number: " + phoneNumber);
break;
case TelephonyManager.CALL_STATE_IDLE:
// 挂断电话时
Log.d(TAG, "Phone idle, incoming number: " + phoneNumber);
break;
}
}
}
最后,在 AndroidManifest.xml 文件中注册该 BroadcastReceiver 广播接收器:
这样,当接收到电话状态变化时,就会触发 PhoneCallReceiver 的 onReceive 方法,从而进行相应的操作。