我正在开发一个需要连接到IOT设备的应用程序,并且该IOT设备成为通讯的热点。我在Android 9(Pie)中遇到一个问题,如果打开了移动数据,则请求发送到移动数据而不是Wifi,并且在较低版本中运行良好。 因此,如何强制移动设备将请求发送到wifi,而不是Andoird 9中的移动设备
答案 0 :(得分:1)
您可以通过反射使用此方法来了解用户是否在移动设备上启用了数据。
private static boolean isMobileDataEnabled(Context context) {
boolean enabled = false;
ConnectivityManager cm =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
try {
Class cmClass = Class.forName(cm.getClass().getName());
Method method = cmClass.getDeclaredMethod("getMobileDataEnabled");
method.setAccessible(true);
enabled = (Boolean) method.invoke(cm);
} catch (Exception e) {
Log.e("DANG", e.toString());
}
return enabled;
}
如果是,那么您应该要求用户禁用数据并打开wifi。除非用户关闭移动数据,否则不要关闭该对话框。