Android手机的网络一般有两种,WiFi网络和移动数据网络。
对网络进行操作前需要静态申请权限,因为并不会对隐私产生危害,所以只需要静态申请。
<!--查看数据网络状态,无需动态申请-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--查看WiFi网络状态,无需动态申请-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
1.WiFi网络
使用WiFiManager(WiFi管理器)获取WiFi状态及设置WiFi状态。
//获取WiFi状态
public static boolean getWiFiState(Context context){WifiManager wifiManager= (WifiManager) context.getSystemService(Context.WIFI_SERVICE);return wifiManager.isWifiEnabled();
}//设置WiFi状态
public static void setWiFiState(Context context,boolean state){WifiManager wifiManager= (WifiManager) context.getSystemService(Context.WIFI_SERVICE);wifiManager.setWifiEnabled(state);
}
2.移动数据网络
使用ConnectivityManager(连接管理器)获取移动数据连接状态及设置连接状态;请注意因为是隐藏方法,需要通过反射调用。
//获取移动数据连接开关的状态
public static boolean getMobileDataState(Context context){//获取连接管理器ConnectivityManager connectivityManager= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);boolean isOpen=false;try {//该方法为隐藏方法,需要通过反射调用String methodName="getMobileDataEnable";Method method=connectivityManager.getClass().getMethod(methodName);isOpen= (boolean) method.invoke(connectivityManager);}catch (Exception e){e.printStackTrace();}return isOpen;
}//设置移动数据连接开关的状态
public static void setMobileDataState(Context context,boolean state){//获取连接管理器ConnectivityManager connectivityManager= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);try{//该方法为隐藏方法,需要通过反射调用String methodName="setMobileDataEnable";Method method=connectivityManager.getClass().getMethod(methodName);method.invoke(connectivityManager,state);}catch (Exception e){e.printStackTrace();}
}
tag:移动数据、移动网络、网络、Internet、互联网、WiFi、基站