How to get wifi hotspot state

前端 未结 4 794
我寻月下人不归
我寻月下人不归 2021-01-06 00:54

I am creating wifi hotspot in my phone and I want get its state change event when I switched on or off hotspot.

相关标签:
4条回答
  • 2021-01-06 00:56

    You can monitor the wifi state with a BroadcastReciver. Here's an example of how to implement it: http://silverballsoftware.com/android-monitor-wifi-state-with-broadcastreceiver

    0 讨论(0)
  • 2021-01-06 00:57

    Please look at the following code. This will help you

    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;
        }
    
    }
    

    Where WIFI_AP_STATE is an enum which is as follows

      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
      }
    
    0 讨论(0)
  • 2021-01-06 01:00

    try this

    Write this code into OnCreate() method

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

    also mention necessary permission to manifest file

    0 讨论(0)
  • 2021-01-06 01:02

    To get the current state of the hotspot AP, I use:

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

    And to get updates when the hotspot AP gets enabled/disabled, receive the "android.net.wifi.WIFI_AP_STATE_CHANGED" intent in a BroadcastReceiver:

    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
                }
            }
        }
    }
    

    Also, don't forget your declaration and permissions in the 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" />
    
    0 讨论(0)
提交回复
热议问题