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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...