android 網絡判斷工具類(APN+WIFI)

f25p 9年前發布 | 2K 次閱讀 Java Android

    public class NetWorkHelper {

    private static String LOG_TAG = "NetWorkHelper";  

    public static Uri uri = Uri.parse("content://telephony/carriers");  

    /** 
     * 判斷是否有網絡連接 
     */  
    public static boolean isNetworkAvailable(Context context) {  
        ConnectivityManager connectivity = (ConnectivityManager) context  
                .getSystemService(Context.CONNECTIVITY_SERVICE);  

        if (connectivity == null) {  
            Log.w(LOG_TAG, "couldn't get connectivity manager");  
        } else {  
            NetworkInfo[] info = connectivity.getAllNetworkInfo();  
            if (info != null) {  
                for (int i = 0; i < info.length; i++) {  
                    if (info[i].isAvailable()) {  
                        Log.d(LOG_TAG, "network is available");  
                        return true;  
                    }  
                }  
            }  
        }  
        Log.d(LOG_TAG, "network is not available");  
        return false;  
    }  

    public static boolean checkNetState(Context context){  
        boolean netstate = false;  
        ConnectivityManager connectivity = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);  
        if(connectivity != null)  
        {  
            NetworkInfo[] info = connectivity.getAllNetworkInfo();  
            if (info != null) {  
                for (int i = 0; i < info.length; i++)  
                {  
                    if (info[i].getState() == NetworkInfo.State.CONNECTED)   
                    {  
                        netstate = true;  
                        break;  
                    }  
                }  
            }  
        }  
        return netstate;  
    }  

    /** 
     * 判斷網絡是否為漫游 
     */  
    public static boolean isNetworkRoaming(Context context) {  
        ConnectivityManager connectivity = (ConnectivityManager) context  
                .getSystemService(Context.CONNECTIVITY_SERVICE);  
        if (connectivity == null) {  
            Log.w(LOG_TAG, "couldn't get connectivity manager");  
        } else {  
            NetworkInfo info = connectivity.getActiveNetworkInfo();  
            if (info != null  
                    && info.getType() == ConnectivityManager.TYPE_MOBILE) {  
                TelephonyManager tm = (TelephonyManager) context  
                        .getSystemService(Context.TELEPHONY_SERVICE);  
                if (tm != null && tm.isNetworkRoaming()) {  
                    Log.d(LOG_TAG, "network is roaming");  
                    return true;  
                } else {  
                    Log.d(LOG_TAG, "network is not roaming");  
                }  
            } else {  
                Log.d(LOG_TAG, "not using mobile network");  
            }  
        }  
        return false;  
    }  

    /** 
     * 判斷MOBILE網絡是否可用 
     *  
     * @param context 
     * @return 
     * @throws Exception 
     */  
    public static boolean isMobileDataEnable(Context context) throws Exception {  
        ConnectivityManager connectivityManager = (ConnectivityManager) context  
                .getSystemService(Context.CONNECTIVITY_SERVICE);  
        boolean isMobileDataEnable = false;  

        isMobileDataEnable = connectivityManager.getNetworkInfo(  
                ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();  

        return isMobileDataEnable;  
    }  


    /** 
     * 判斷wifi 是否可用 
     * @param context 
     * @return 
     * @throws Exception 
     */  
    public static boolean isWifiDataEnable(Context context) throws Exception {  
        ConnectivityManager connectivityManager = (ConnectivityManager) context  
                .getSystemService(Context.CONNECTIVITY_SERVICE);  
        boolean isWifiDataEnable = false;  
        isWifiDataEnable = connectivityManager.getNetworkInfo(  
                ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();  
        return isWifiDataEnable;  
    }  

    /** 
     * 設置Mobile網絡開關 
     *  
     * @param context 
     * @param enabled 
     * @throws Exception 
     */  
    public static void setMobileDataEnabled(Context context, boolean enabled)  
            throws Exception {  
        APNManager apnManager=APNManager.getInstance(context);  
        List<APN> list = apnManager.getAPNList();  
        if (enabled) {  
            for (APN apn : list) {  
                ContentValues cv = new ContentValues();  
                cv.put("apn", apnManager.matchAPN(apn.apn));  
                cv.put("type", apnManager.matchAPN(apn.type));  
                context.getContentResolver().update(uri, cv, "_id=?",  
                        new String[] { apn.apnId });  
            }  
        } else {  
            for (APN apn : list) {  
                ContentValues cv = new ContentValues();  
                cv.put("apn", apnManager.matchAPN(apn.apn) + "mdev");  
                cv.put("type", apnManager.matchAPN(apn.type) + "mdev");  
                context.getContentResolver().update(uri, cv, "_id=?",  
                        new String[] { apn.apnId });  
            }  
        }  
    }  

}  </pre> 



 本文由用戶 f25p 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!