【发布时间】:2020-12-15 15:54:06
【问题描述】:
我一直在开发一些连接到外部设备的应用程序,该设备是一个没有网络连接的 WiFi 接入点,以便对其进行配置。
在某些手机上,这给我带来了问题,因为它们激活了“Wifi 助手”,它可以在 WiFi 信号低时切换网络。所以我想检测这个选项是否被激活并向用户显示一个正确的对话框,说他应该禁用 wifi 助手(看门狗)才能正确配置设备。
我的代码如下:
/**
* Checks whether the "Avoid poor networks" setting (named "Auto network switch" on some Samsung devices
* or "Wifi assistant" on some Xiaomis) is enabled, which can in some instances interfere with Wi-Fi.
*
* @return true if the "Avoid poor networks" or "Auto network switch" setting is enabled
*/
public static boolean isPoorNetworkAvoidanceEnabled(final Context ctx, final boolean isWatchdogServiceFind) {
final int SETTING_UNKNOWN = -1;
final int SETTING_ENABLED = 1;
String avoidPoorText = "wifi_watchdog_poor_network_test_enabled";
final ContentResolver cr = ctx.getContentResolver();
if (isWatchdogServiceFind) {
avoidPoorText = "wifi_watchdog_on";
}
int result = Settings.Global.getInt(cr, avoidPoorText, SETTING_UNKNOWN);
// Return if the setting value is known or unknown
if (result != SETTING_UNKNOWN) {
return (result == SETTING_ENABLED);
} else {
return false;
}
}
此代码在我的三星设备上运行良好,但来自Settings.Global.getInt(cr, "wifi_watchdog_poor_network_test_enabled") 和Settings.Global.getInt(cr, "wifi_watchdog_on") 的结果 为其他制造商返回了SettingNotFoundException。它至少在以下方面失败了:小米红米 7、小米红米 Note 8 和摩托罗拉 One Action。
如果我启用/禁用“WiFi 助手”选项,为什么某些设备没有返回设置值?有什么办法可以解决吗?来自官方文档 (https://developer.android.com/reference/android/provider/Settings.Global#WIFI_WATCHDOG_ON) 应该返回 WiFi 看门狗的实际值。
【问题讨论】:
标签: android android-wifi samsung-mobile wifi-direct xiaomi