android monitors whether the sim card has a service example of sim card management

  • 2020-05-19 05:54:33
  • OfStack



public class UniteqService {
public static final String LOG_TAG = "UniteqService";
public boolean DEBUG = true;
private boolean hasService = false;// Is there a service 
private PhoneStateListener[] mPhoneStateListener;// Listening to the double card 
private TelephonyManager mPhone;
// Listening to the class 
private PhoneStateListener getPhoneStateListener(final int sub) {
PhoneStateListener sPhoneStateListener = new PhoneStateListener(sub) {
    @Override
        public void onServiceStateChanged(ServiceState serviceState) {
            // TODO Auto-generated method stub
            if (serviceState != null) {
                if (serviceState.getState() == ServiceState.STATE_IN_SERVICE) {
                    hasService = true;
                } else {
                    hasService = false;
                }
            } else {
                if (DEBUG) Log.d(TAG, "no service state...may be the balance is not enough" + sub);
            }
            super.onServiceStateChanged(serviceState);
        }
      };
    return sPhoneStateListener;
}
// Register to monitor 
private void registerPhoneListener() {
// Gets the card number ,MSimTelephonyManager  This class API There is no open , You can compile the source code 
// get frameworks.jar Package and import your project ,  then import android.telephony.MSimTelephonyManager;
mSub = MSimTelephonyManager.getDefault().getPhoneCount();
mPhoneStateListener = new PhoneStateListener[mSub];
for (int i = 0; i < mSub; i++) {
mPhoneStateListener[i] = getPhoneStateListener(i);
mPhone.listen(mPhoneStateListener[i], PhoneStateListener.LISTEN_SERVICE_STATE);
}
}
// Cancel to monitor 
private void unregisterPhoneListener() {
mSub = MSimTelephonyManager.getDefault().getPhoneCount();
for (int i = 0; i < mSub; i++) {
if(mPhoneStateListener[i] != null){
mPhone.listen(mPhoneStateListener[i], PhoneStateListener.LISTEN_NONE);
}
}
}
}


Related articles: