我正在开发一个应用程序,我需要连接到物联网设备,这个物联网设备成为通信的热点。我在Android 9(Pie)中遇到了一个问题,如果移动数据是开着的,那么请求发送到移动数据而不是Wifi,它在较低版本中工作得很好。那么如何在Andoird 9中强制手机发送请求到wifi而不是手机呢?
发布于 2019-08-06 07:57:50
您可以通过反射使用此方法来了解用户是否在移动端启用了数据。
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。除非用户关闭移动数据,否则该对话框不会被关闭。
https://stackoverflow.com/questions/56445132
复制相似问题