以下是一个使用TelephonyManager监听器来监听电话呼叫状态的示例代码:
import android.content.Context;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
public class CallStateListener extends PhoneStateListener {
private static final String TAG = "CallStateListener";
@Override
public void onCallStateChanged(int state, String phoneNumber) {
super.onCallStateChanged(state, phoneNumber);
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
Log.d(TAG, "Idle State");
// 在电话空闲状态下的操作
break;
case TelephonyManager.CALL_STATE_RINGING:
Log.d(TAG, "Ringing State");
// 在电话响铃状态下的操作
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.d(TAG, "Offhook State");
// 在电话接通状态下的操作
break;
}
}
// 在需要监听电话呼叫状态的地方调用此方法
public void startListening(Context context) {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if (telephonyManager != null) {
telephonyManager.listen(this, PhoneStateListener.LISTEN_CALL_STATE);
}
}
// 停止监听电话呼叫状态
public void stopListening(Context context) {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if (telephonyManager != null) {
telephonyManager.listen(this, PhoneStateListener.LISTEN_NONE);
}
}
}
在你的Activity或Fragment中,你可以这样使用CallStateListener:
public class MainActivity extends AppCompatActivity {
private CallStateListener callStateListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
callStateListener = new CallStateListener();
callStateListener.startListening(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
callStateListener.stopListening(this);
}
}
请确保在AndroidManifest.xml文件中添加以下权限:
这样,你就可以通过CallStateListener来监听电话呼叫状态,并在不同状态下执行相应的操作。