【问题标题】:WiFi state is not enablingWiFi 状态未启用
【发布时间】:2012-01-03 07:35:22
【问题描述】:

我正在尝试创建一个用于启用和禁用 wifi 的小部件。

if(myWifiManager.isWifiEnabled()){
            System.out.println("Toggle Wifi Enabled going to disable");
            myWifiManager.setWifiEnabled(false);
        }
        else{
            System.out.println("Wifi Disabled going to enable ");

            myWifiManager.setWifiEnabled(true);
            System.out.println("WI: "+myWifiManager.isWifiEnabled());
        }

这是我正在使用的代码,禁用部分工作正常,但启用部分工作不正常。启用 wifi 后不久,我正在打印 wifi 状态,我将其视为错误。

【问题讨论】:

    标签: android android-wifi


    【解决方案1】:

    已弃用:从 Build.VERSION_CODES#Q 开始,应用程序不支持 允许启用/禁用 Wi-Fi。兼容性说明:适用于应用程序 针对 android.os.Build.VERSION_CODES#Q 或更高版本,此 API 将 总是失败并返回 false。如果应用针对的是旧版 SDK (android.os.Build.VERSION_CODES#P或以下),可以继续使用 这个 API。

    (Source)

    因此,这仅适用于具有 android Pie 及以下版本的设备。

    【讨论】:

      【解决方案2】:

      这里是如何在android中打开和关闭wifi。

      首先您需要在清单文件中声明以下内容

      <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
      <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"></uses-permission>
      <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
      <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
      

      在你的 Activity 类上这样做之后

      private WifiManager wifiManager;
      @Override 
      public void onCreate(Bundle icicle) {
       ....................
       wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
       if(wifiManager.isWifiEnabled()){
       wifiManager.setWifiEnabled(false);
       }else{
      wifiManager.setWifiEnabled(true);
      }
      

      }

      说明

      从我们的系统获取 Wifi 服务

      wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
      

      检查我们的 wifi 当前是否打开或关闭

      if(wifiManager.isWifiEnabled()){
      

      打开/关闭我们的无线网络 wifiManager.setWifiEnabled();

      参考

      WifiEnabler

      http://google-androidlovers.blogspot.com/2012/01/scan-for-wireless-networks-in-android.html

      http://www.java2s.com/Open-Source/Android/android-platform-apps/Settings/com/android/settings/wifi/WifiApEnabler.java.htm

      【讨论】:

      • UPDATE_DEVICE_STATS 仅用于系统应用
      • 除了UPDATE_DEVICE_STATS(@Superbiji是对的,不要用)其他权限都是normal级别。因此,如果您尝试执行需要这些权限的操作,Android 不会对您大喊大叫。 IIRC 你甚至不会在 logcat 中看到任何东西。
      【解决方案3】:

      下载这个例子就是你想要的

      https://github.com/siddhpuraamitr/WIfi-Toggle-Widget

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-09
        • 1970-01-01
        相关资源
        最近更新 更多