안 드 로 이 드 모 바 일 네트워크 열기/닫 기

안 드 로 이 드 는 APN 네트워크 의 API 에 대해 공개 하지 않 았 지만 데이터 베 이 스 를 업데이트 할 수 있 습 니 다.시스템 은 데이터 베 이 스 를 자동 으로 감청 하여 APN 을 켜 거나 닫 습 니 다.
소스 코드 에서 frameworks/base/core/java/android/provider/telephony.java 클래스 는 관련 URI 와 데이터베이스 필드 를 소개 합 니 다.content://telephony/carriers
필드 는 Telephony.자바 에서 찾 을 수 있 습 니 다.
APN 을 열 면 올 바른 APN 인 자 를 설정 할 수 있 습 니 다.
APN 을 닫 으 면 잘못된 인 자 를 설정 할 수 있 습 니 다.
우선 모 바 일 네트워크 연결 여 부 를 판단 합 니 다.
ConnectivityManager connectivity = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if(connectivity.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == State.CONNECTED){
     true;
}else{
     false;
}

열기/닫 기:
        /**
	 *       ,         APN  
	 * @param context
	 */
	public static void openApn(Context context){
		ArrayList<APNInfos> apnList = new ArrayList<APNInfos>();
		apnList = getAPNList(context);
		for(APNInfos apnInfos : apnList){
			log("-openApn--getApn-----" + apnInfos.getApn());
		}
		for(APNInfos apnInfos : apnList){
			ContentValues values = new ContentValues(); 
			values.put("apn",APNMatchTools.matchAPN(apnInfos.getApn()));
			values.put("type",APNMatchTools.matchAPN(apnInfos.getType()));
			context.getContentResolver().update(Contents.apnUri, values, "_id=?", new String[]{apnInfos.getId()});
		}
	}
	
	/**
	 *       ,         APN  
	 * @param context
	 */
	public static void closeApn(Context context){
		ArrayList<APNInfos> apnList = new ArrayList<APNInfos>();
		apnList = getAPNList(context);
		for(APNInfos apnInfos : apnList){
			log("--closeApn-getApn-----" + apnInfos.getApn());
		}
		for(APNInfos apnInfos : apnList){
			ContentValues values = new ContentValues(); 
			values.put("apn",APNMatchTools.matchAPN(apnInfos.getApn()) + "mdev");
			values.put("type",APNMatchTools.matchAPN(apnInfos.getType()) + "mdev");
			context.getContentResolver().update(Contents.apnUri, values, "_id=?", new String[]{apnInfos.getId()});
		}
	}

APN 목록 가 져 오기:
        /**
	 *   APN  
	 * @param context
	 * @return
	 */
	public static ArrayList<APNInfos> getAPNList(Context context){
		ArrayList<APNInfos> apnList = new ArrayList<APNInfos>();
		String[] projection = {"_id,apn,type,current"}; 
		Cursor cr = context.getContentResolver().query(Contents.apnUri, projection, null, null, null);
		while(cr !=null && cr.moveToNext()){ 
			if(cr.getString(cr.getColumnIndex("apn")).equals("")){
				
			}else{
				APNInfos apnInfos = new APNInfos();
				apnInfos.setId(cr.getString(cr.getColumnIndex("_id")));
				apnInfos.setApn(cr.getString(cr.getColumnIndex("apn")));
				apnInfos.setType(cr.getString(cr.getColumnIndex("type")));
				apnList.add(apnInfos);
			}
		}
		if(cr != null){
			cr.close();
		}
		return apnList;
	}

APNMatchTools 클래스:
public class APNMatchTools {
	
	
	
	public static String matchAPN(String currentName){
		if(currentName == null || currentName.equals("")){
			return "";
		}
		currentName = currentName.toLowerCase();//      
		if(currentName.startsWith(Contents.CMNET)){
			return Contents.CMNET;
		}else if(currentName.startsWith(Contents.CMWAP)){
			return Contents.CMWAP;
		}else if(currentName.startsWith(Contents.GNET_3)){
			return Contents.GNET_3;
		}else if(currentName.startsWith(Contents.GWAP_3)){
			return Contents.GWAP_3;
		}else if(currentName.startsWith(Contents.UNINET)){
			return Contents.UNINET;
		}else if(currentName.startsWith(Contents.UNIWAP)){
			return Contents.UNIWAP;
		}else if(currentName.startsWith("default")){
			return "default";
		}else{
			return "";
		}
		
	}

}

그 속  몇 개의 변수
        public static final String CMWAP = "cmwap";   //    cmwap 
	public static final String CMNET = "cmnet";   //    cmnet 
	public static final String GWAP_3 = "3gwap";  //    3gwap
	public static final String GNET_3 = "3gnet";  //    3gnet
	public static final String UNIWAP = "uniwap"; //    uni wap
	public static final String UNINET = "uninet"; //    uni net

APNInfos 클래스
public class APNInfos {
	private String id, apn ,type;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getApn() {
		return apn;
	}

	public void setApn(String apn) {
		this.apn = apn;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}
	

}

좋은 웹페이지 즐겨찾기