package com.bon.setapn; import android.content.ContentResolver; import android.content.SharedPreferences; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; /** * 设置apn * @author lei * */ public class SetApn { private TelephonyManager mTelephonyManager; ContentResolver resolver; SharedPreferences sharedPreferences; private final int cmWap = 1; //移动 private final int ctWap = 3; //电信 private final int cuWap = 2; //联通 /** * 构造 * @param _mTelephonyManager */ public SetApn(TelephonyManager _mTelephonyManager,ContentResolver _resolver, SharedPreferences _sharedPreferences){ mTelephonyManager = _mTelephonyManager; resolver = _resolver; sharedPreferences = _sharedPreferences; } /** * 判断手机运营商 * @return */ private int simOperators(){ //1 为 移动运营商 2为联通 3为电信 int operators = -1; String imsi=mTelephonyManager.getSubscriberId(); if(!TextUtils.isEmpty(imsi)){ if(imsi.startsWith("46001")){ operators=2; }else if(imsi.startsWith("46002")||imsi.startsWith("46000")){ operators=1; }else if(imsi.startsWith("46003")) { operators=3; } } return operators; } /** * 判断手机sim卡网络状态是否正常 * @return */ private boolean simStatus(){ boolean isSimStatusCorrect = false; int simState = mTelephonyManager.getSimState(); switch (simState) { case TelephonyManager.SIM_STATE_ABSENT: //无卡 isSimStatusCorrect = false; break; case TelephonyManager.SIM_STATE_NETWORK_LOCKED: //需要NetworkPIN解锁 isSimStatusCorrect = false; break; case TelephonyManager.SIM_STATE_PIN_REQUIRED: //需要PIN解锁 isSimStatusCorrect = false; break; case TelephonyManager.SIM_STATE_PUK_REQUIRED: //需要PUN解锁 isSimStatusCorrect = false; break; case TelephonyManager.SIM_STATE_READY: //状态正常 isSimStatusCorrect = true; break; case TelephonyManager.SIM_STATE_UNKNOWN: //未知状态 isSimStatusCorrect = false; break; } return isSimStatusCorrect; } /** * 设置apn */ public void setWapApn(){ if(simStatus()){ switch (simOperators()) { case cmWap: SetCmWap.setWapAPN(resolver, sharedPreferences); Log.i("MainActivity", "移动"); break; case ctWap: SetCtWap.setWapAPN(resolver, sharedPreferences); Log.i("MainActivity", "电信"); break; case cuWap: SetCuWap.setWapAPN(resolver, sharedPreferences); Log.i("MainActivity", "联通"); break; } } } }