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;
}
}
}
}