【问题标题】:How to get wifi hotspot state如何获取wifi热点状态
【发布时间】:2012-08-04 04:47:35
【问题描述】:

我正在手机中创建 wifi 热点,我希望在打开或关闭热点时获取其状态更改事件。

【问题讨论】:

    标签: android android-wifi android-wireless


    【解决方案1】:

    请看下面的代码。这将帮助你

    public class WifiApManager {
        private final WifiManager mWifiManager;
    
        public WifiApManager(Context context) {
            mWifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
        }
    
        /*the following method is for getting the wifi hotspot state*/
    
        public WIFI_AP_STATE getWifiApState() {
            try {
                Method method = mWifiManager.getClass().getMethod("getWifiApState");
    
                int tmp = ((Integer) method.invoke(mWifiManager));
    
                // Fix for Android 4
                if (tmp > 10) {
                    tmp = tmp - 10;
                }
    
                return WIFI_AP_STATE.class.getEnumConstants()[tmp];
            } catch (Exception e) {
                Log.e(this.getClass().toString(), "", e);
                return WIFI_AP_STATE.WIFI_AP_STATE_FAILED;
            }
        }
    
        /**
         * Return whether Wi-Fi Hotspot is enabled or disabled.
         * 
         * @return {@code true} if Wi-Fi AP is enabled
         * @see #getWifiApState()
         */
        public boolean isWifiApEnabled() {
            return getWifiApState() == WIFI_AP_STATE.WIFI_AP_STATE_ENABLED;
        }
    
    }
    

    其中 WIFI_AP_STATE 是一个枚举,如下所示

      public enum WIFI_AP_STATE {
          WIFI_AP_STATE_DISABLING, 
          WIFI_AP_STATE_DISABLED, 
          WIFI_AP_STATE_ENABLING, 
          WIFI_AP_STATE_ENABLED, 
          WIFI_AP_STATE_FAILED
      }
    

    【讨论】:

    • 这似乎来自whitebyte.info/android/android-wifi-hotspot-manager-class。到源的链接会很好,而不仅仅是复制和粘贴。还有可下载的示例代码。
    • @Ivan:也许你是对的。但我从另一个来源获得了这段代码,而不是来自互联网。任何方式thanx您的建议。
    • @AtulPanda 那么你想获取那个其他来源?你否认它不是你的代码,承认它不是你的
    • @TheRealChx101 对不起。现在我不记得来源了。我在 6 年前回答过。
    【解决方案2】:

    为了获取热点AP的当前状态,我使用:

    final WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    final int apState = (Integer) wifiManager.getClass().getMethod("getWifiApState").invoke(wifiManager);
    
    if (apState == 13) {
        // Ap Enabled
    }
    

    要在热点 AP 启用/禁用时获取更新,请在 BroadcastReceiver 中接收“android.net.wifi.WIFI_AP_STATE_CHANGED”意图:

    public class WifiAPReceiver extends BroadcastReceiver {
    
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction() == "android.net.wifi.WIFI_AP_STATE_CHANGED") {
                int apState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);
                if (apState == 13) {
                    // Hotspot AP is enabled
                } else {
                    // Hotspot AP is disabled/not ready
                }
            }
        }
    }
    

    另外,不要忘记您在 Manifest 中的声明和权限:

    <receiver android:name=".WifiAPReceiver">
        <intent-filter>
            <action android:name="android.net.wifi.WIFI_AP_STATE_CHANGED" />
        </intent-filter>
    </receiver>
    
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    

    【讨论】:

      【解决方案3】:

      您可以使用 BroadcastReciver 监控 wifi 状态。以下是如何实现它的示例: http://silverballsoftware.com/android-monitor-wifi-state-with-broadcastreceiver

      【讨论】:

      • 它对wifi状态有效,但我想获得热点状态不是wifi,当我打开热点时,如果wifi打开,wifi会自动关闭,当我关闭热点时它不会通过任何事件。
      • 我的错,我认为这篇文章正是你所需要的:stackoverflow.com/questions/9937831/…
      • 我已经尝试过了,但我没有收到任何通知是我的广播课
      • 那你能帮忙举个例子吗?
      【解决方案4】:

      试试这个

      将此代码写入 OnCreate() 方法

      ConnectivityManager cm = (ConnectivityManager) getSystemService(con.CONNECTIVITY_SERVICE);
              NetworkInfo netInfo = cm.getActiveNetworkInfo();
              if (netInfo != null && netInfo.isConnectedOrConnecting()) {
      
                  Success 
              }
      
              else {
                             Give Some Error Message
                   }
      

      还提到清单文件的必要权限

      【讨论】:

      • 这和热点有什么关系?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      • 2011-06-10
      相关资源
      最近更新 更多