android 监听sim卡状态,Android 监听 SIM 卡状态
时间: 2023-09-28 09:11:01 浏览: 258
要监听 Android 设备的 SIM 卡状态,可以使用 `PhoneStateListener` 类。以下是一个示例代码:
```java
import android.content.Context;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
public class SimStateReceiver {
private static final String TAG = "SimStateReceiver";
private Context mContext;
private TelephonyManager mTelephonyManager;
private PhoneStateListener mPhoneStateListener;
public SimStateReceiver(Context context) {
mContext = context;
mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
mPhoneStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String phoneNumber) {
super.onCallStateChanged(state, phoneNumber);
Log.d(TAG, "onCallStateChanged: state = " + state + ", phoneNumber = " + phoneNumber);
}
@Override
public void onServiceStateChanged(ServiceState serviceState) {
super.onServiceStateChanged(serviceState);
Log.d(TAG, "onServiceStateChanged: serviceState = " + serviceState);
}
@Override
public void onSimStateChanged(int state) {
super.onSimStateChanged(state);
Log.d(TAG, "onSimStateChanged: state = " + state);
switch (state) {
case TelephonyManager.SIM_STATE_ABSENT:
// SIM 卡不存在或未插入
break;
case TelephonyManager.SIM_STATE_NETWORK_LOCKED:
// SIM 卡已被网络锁定
break;
case TelephonyManager.SIM_STATE_PIN_REQUIRED:
// SIM 卡需要 PIN 解锁
break;
case TelephonyManager.SIM_STATE_PUK_REQUIRED:
// SIM 卡需要 PUK 解锁
break;
case TelephonyManager.SIM_STATE_READY:
// SIM 卡已准备好
break;
case TelephonyManager.SIM_STATE_UNKNOWN:
// SIM 卡状态未知
break;
}
}
};
}
public void start() {
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE | PhoneStateListener.LISTEN_SERVICE_STATE | PhoneStateListener.LISTEN_SIM_STATE);
}
public void stop() {
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
}
}
```
在上面的代码中,我们创建了一个 `SimStateReceiver` 类,它有一个 `start()` 方法和一个 `stop()` 方法,用于开始和停止监听 SIM 卡状态。在 `SimStateReceiver` 的构造方法中,我们创建了一个 `PhoneStateListener` 对象,并重写了其中的 `onSimStateChanged()` 方法,用于监听 SIM 卡状态的变化。在 `onSimStateChanged()` 方法中,我们根据不同的 SIM 卡状态打印不同的日志信息。最后,在 `start()` 方法中,我们通过 `TelephonyManager` 的 `listen()` 方法注册了 `PhoneStateListener` 对象,开始监听 SIM 卡状态。在 `stop()` 方法中,我们通过 `TelephonyManager` 的 `listen()` 方法取消了 `PhoneStateListener` 对象的注册,停止监听 SIM 卡状态。
阅读全文