最近遇到的需求是将 wifi 热点相关信息展示给用户,于是,有三处功能需要实现:
- 判断是否开启了热点
- 获取 SSID
- 获取 PSK
以下是工具类的全部代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| import android.content.Context; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.util.Log;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method;
public class WifiApUtil {
private static final String TAG = "qll_wifiaputils";
public static String getSsid(Context context) { String ssid = "";
WifiManager wifiManager = (WifiManager) context .getApplicationContext().getSystemService(Context.WIFI_SERVICE); try { Method getWifiApConfiguration = wifiManager.getClass().getMethod("getWifiApConfiguration"); getWifiApConfiguration.setAccessible(true); WifiConfiguration configuration = (WifiConfiguration) getWifiApConfiguration.invoke(wifiManager); ssid = configuration.SSID; } catch (NoSuchMethodException e) { Log.e(TAG, "getSsid: 没有这个方法" + e.toString() ); } catch (IllegalAccessException e) { Log.e(TAG, "getSsid: 没有权限" + e.toString() ); } catch (InvocationTargetException e) { Log.e(TAG, "getSsid: 调用目标出错----" + e.toString() ); } return ssid; }
public static String getPsk(Context context) { String psk = "";
WifiManager wifiManager = (WifiManager) context .getApplicationContext().getSystemService(Context.WIFI_SERVICE); try { Method getWifiApConfiguration = wifiManager.getClass().getMethod("getWifiApConfiguration"); getWifiApConfiguration.setAccessible(true); WifiConfiguration configuration = (WifiConfiguration) getWifiApConfiguration.invoke(wifiManager); psk = configuration.preSharedKey; } catch (NoSuchMethodException e) { Log.e(TAG, "getPsk: 没有这个方法" + e.toString() ); } catch (IllegalAccessException e) { Log.e(TAG, "getPsk: 没有权限" + e.toString() ); } catch (InvocationTargetException e) { Log.e(TAG, "getPsk: 调用目标出错----" + e.toString() ); } return psk; }
public static boolean isWifiApEnable(Context context) { boolean isEnabled = false; WifiManager wifiManager = (WifiManager) context .getApplicationContext().getSystemService(Context.WIFI_SERVICE); try { Method isWifiApEnabled = wifiManager.getClass().getMethod("isWifiApEnabled"); isWifiApEnabled.setAccessible(true); isEnabled = (Boolean) isWifiApEnabled.invoke(wifiManager);
} catch (NoSuchMethodException e) { Log.e(TAG, "isWifiApEnable: 没有这个方法" + e.toString() ); } catch (IllegalAccessException e) { Log.e(TAG, "isWifiApEnable: 没有权限" + e.toString() ); } catch (InvocationTargetException e) { Log.e(TAG, "isWifiApEnable: 调用目标出错----" + e.toString() ); }
return isEnabled; } }
|
emmm, 文档注释还在学习中 =-=
如果需要配置的其它信息,可以直接进 configuration
看看。
参考文档
Android盒子开发,获取网络的信息(热点,WIFI,有线)