要在Android设备上手动在WiFi和移动数据之间切换,无需Root,可以使用以下步骤和代码示例:
public class NetworkUtils {
private static final int WIFI_STATE_ENABLED = 3;
private static final int MOBILE_DATA_ENABLED = 5;
public static boolean isWifiEnabled(Context context) {
WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
return wifiManager.isWifiEnabled();
}
public static void setWifiEnabled(Context context, boolean enabled) {
WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(enabled);
}
public static boolean isMobileDataEnabled(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
try {
Class> connectivityManagerClass = Class.forName(connectivityManager.getClass().getName());
Method getMobileDataEnabledMethod = connectivityManagerClass.getDeclaredMethod("getMobileDataEnabled");
getMobileDataEnabledMethod.setAccessible(true);
return (boolean) getMobileDataEnabledMethod.invoke(connectivityManager);
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public static void setMobileDataEnabled(Context context, boolean enabled) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
try {
Class> connectivityManagerClass = Class.forName(connectivityManager.getClass().getName());
Method setMobileDataEnabledMethod = connectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", boolean.class);
setMobileDataEnabledMethod.setAccessible(true);
setMobileDataEnabledMethod.invoke(connectivityManager, enabled);
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 检查WiFi状态
boolean isWifiEnabled = NetworkUtils.isWifiEnabled(context);
// 切换WiFi状态
NetworkUtils.setWifiEnabled(context, !isWifiEnabled);
// 检查移动数据状态
boolean isMobileDataEnabled = NetworkUtils.isMobileDataEnabled(context);
// 切换移动数据状态
NetworkUtils.setMobileDataEnabled(context, !isMobileDataEnabled);
这样,你就可以在Android设备上手动切换WiFi和移动数据状态,无需Root权限。注意,需要在AndroidManifest.xml中添加相应的权限,并且某些方法可能需要反射来调用。