我遇到了一个问题,需要代表用户切换wifi网络。我们有一个物联网设备需要连接才能进行设置。使用
WifiManager
和ConnectivityManager
,我可以建立连接并进行REST调用,但是大约10秒后它就会切换回去。我不明白为什么会这样。有几行来自设备的奇怪日志,我确定它们是相关的,但我不知道如何修复,主要包括:02-12 15:36:13.441 E/WifiConfigManager: UID 10356 does not have permission to update configuration "REDACTED"NONE
02-12 15:36:13.442 I/WifiStateMachine: connectToUserSelectNetwork Allowing uid 10356 with insufficient permissions to connect=90
...
02-12 15:36:13.470 E/WifiVendorHal: stopRssiMonitoring(l.2156) failed {.code = ERROR_NOT_AVAILABLE, .description = }
02-12 15:36:13.470 W/WifiConfigManager: Looking up network with invalid networkId -1
...
02-12 15:36:16.882 D/WifiStateMachine: NETWORK_STATUS_UNWANTED_VALIDATION_FAILED
...
02-12 15:36:17.041 D/WifiPermissionsUtil: Denied: no location permission
这里涉及到很多关于权限的内容,但我认为我需要请求所有权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
我请求获取位置的RuntimePermission,因为我正在使用SDK 27的设备进行测试。更重要的是,它确实让我连接,但几秒钟后就改变了想法。
bindProcessToNetwork
,但仍然存在这些问题:( - sMyles