package com.my.device_admin.business; import java.lang.reflect.Method; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.wifi.WifiManager; import android.provider.Settings; public class NetworkManager { private Context context; private ConnectivityManager connManager; public NetworkManager(Context context) { this.context = context; connManager = (ConnectivityManager) this.context .getSystemService(Context.CONNECTIVITY_SERVICE); } /** * @return 網絡是否鏈接可用 */ public boolean isNetworkConnected() { NetworkInfo networkinfo = connManager.getActiveNetworkInfo(); if (networkinfo != null) { return networkinfo.isConnected(); } return false; } /** * @return wifi是否鏈接可用 */ public boolean isWifiConnected() { NetworkInfo mWifi = connManager .getNetworkInfo(ConnectivityManager.TYPE_WIFI); if (mWifi != null) { return mWifi.isConnected(); } return false; } /** * 當wifi不能訪問網絡時,mobile纔會起做用 * @return GPRS是否鏈接可用 */ public boolean isMobileConnected() { NetworkInfo mMobile = connManager .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); if (mMobile != null) { return mMobile.isConnected(); } return false; } /** * GPRS網絡開關 反射ConnectivityManager中hide的方法setMobileDataEnabled 能夠開啓和關閉GPRS網絡 * * @param isEnable * @throws Exception */ public void toggleGprs(boolean isEnable) throws Exception { Class<?> cmClass = connManager.getClass(); Class<?>[] argClasses = new Class[1]; argClasses[0] = boolean.class; // 反射ConnectivityManager中hide的方法setMobileDataEnabled,能夠開啓和關閉GPRS網絡 Method method = cmClass.getMethod("setMobileDataEnabled", argClasses); method.invoke(connManager, isEnable); } /** * WIFI網絡開關 * * @param enabled * @return 設置是否success */ public boolean toggleWiFi(boolean enabled) { WifiManager wm = (WifiManager) context .getSystemService(Context.WIFI_SERVICE); return wm.setWifiEnabled(enabled); } /** * * @return 是否處於飛行模式 */ public boolean isAirplaneModeOn() { // 返回值是1時表示處於飛行模式 int modeIdx = Settings.System.getInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0); boolean isEnabled = (modeIdx == 1); return isEnabled; } /** * 飛行模式開關 * @param setAirPlane */ public void toggleAirplaneMode(boolean setAirPlane) { Settings.System.putInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, setAirPlane ? 1 : 0); // 廣播飛行模式信號的改變,讓相應的程序能夠處理。 // 不發送廣播時,在非飛行模式下,Android 2.2.1上測試關閉了Wifi,不關閉正常的通話網絡(如GMS/GPRS等)。 // 不發送廣播時,在飛行模式下,Android 2.2.1上測試沒法關閉飛行模式。 Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED); // intent.putExtra("Sponsor", "Sodino"); // 2.3及之後,需設置此狀態,不然會一直處於與運營商斷連的狀況 intent.putExtra("state", setAirPlane); context.sendBroadcast(intent); } }
WiFi、GPRS、飛行模式的開啓、關閉以及一些狀態的檢測java