如何解决WifiManager.disconnect在Android Q中已弃用
在Android Q及更高版本( API> = 29 )中,WifiManager.disconnect()方法已被弃用。
在Android 10及更高版本中从Wi-Fi网络断开连接的解决方案是什么?
我已经实现了下一个代码,但始终返回失败: STATUS_NETWORK_SUGGESTIONS_ERROR_REMOVE_INVALID。
我想失败的原因可能是removeNetworkSuggestions可能与addNetworkSuggestions一起工作,但是相反,我不需要添加任何网络来断开与活跃的人。
C:\Users\<username>\.nuget\packages\canon.edsdk\<version>\dll
我在清单中具有运行时授予的必需权限:
public final class WifiUtils {
private static final String TAG = "WifiUtils";
public static void disconnect(final Context context) {
// Sanity check
if (context.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_DENIED) {
// Without the <Fine location> permission the returned SSID is always: '<unkNown ssid>'.
// Note: The <Coarse location> permission is not enough.
Log.e(WifiUtils.TAG,"Missing <ACCESS_FINE_LOCATION> permission. required to obtain the Wifi SSID.");
return;
}
final WifiManager manager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
if (!manager.isWifiEnabled())
return;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
final WifiInfo wifiInfo = manager.getConnectionInfo();
if (wifiInfo == null) {
Log.w(WifiUtils.TAG,"Failed to get connection details.");
return;
}
final String ssid = wifiInfo.getSSID();
if (TextUtils.isEmpty(ssid)) {
Log.e(WifiUtils.TAG,"Unable to resolve Wifi SSID.");
} else {
Log.i(WifiUtils.TAG,"Resolved Wifi SSID: " + ssid);
final List<WifiNetworkSuggestion> suggestions = new ArrayList<>();
suggestions.add(new WifiNetworkSuggestion.Builder()
.setSsid(wifiInfo.getSSID())
.build());
final int status = manager.removeNetworkSuggestions(suggestions);
Log.d(WifiUtils.TAG,"Wifi disconnection status result: " + status);
}
} else {
manager.disconnect();
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。