Android便携式热点的开启状态检测和SSID的获取方法

WIFI热点的开启状态和开启后的SSID如何获取呢?

打开WifiManager.java源码,可找到 getWifiApState() 方法,惊喜的发现直接调用这个方法就能获取到热点的状态,然而在调用的时候并不能调用到这个方法。。。这个方法被隐藏起来了,目前我是通过反射调用的。

/** * Gets the Wi-Fi enabled state. * @return One of {@link #WIFI_AP_STATE_DISABLED}, * {@link #WIFI_AP_STATE_DISABLING}, {@link #WIFI_AP_STATE_ENABLED}, * {@link #WIFI_AP_STATE_ENABLING}, {@link #WIFI_AP_STATE_FAILED} * @see #isWifiApEnabled() * * @hide Dont open yet */ public int getWifiApState() { try { return mService.getWifiApEnabledState(); } catch (RemoteException e) { return WIFI_AP_STATE_FAILED; } }

于是就写了一个放射,获取热点的状态

public static boolean isWifiApOpen(Context context) { try { WifiManager manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); //通过放射获取 getWifiApState()方法 Method method = manager.getClass().getDeclaredMethod("getWifiApState"); //调用getWifiApState() ,获取返回值 int state = (int) method.invoke(manager); //通过放射获取 WIFI_AP的开启状态属性 Field field = manager.getClass().getDeclaredField("WIFI_AP_STATE_ENABLED"); //获取属性值 int value = (int) field.get(manager); //判断是否开启 if (state == value) { return true; } else { return false; } } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } return false; }

通过  getWifiApState() 方法返回值的注释,可以找到如下几种状态,拿到当前状态值之后,只需要对比各种状态的值,就知道热点的开启状态了

* @return One of {@link #WIFI_STATE_DISABLED}, * {@link #WIFI_STATE_DISABLING}, {@link #WIFI_STATE_ENABLED}, * {@link #WIFI_STATE_ENABLING}, {@link #WIFI_STATE_UNKNOWN}

同样的,也是通过反射获取到热点的SSID

try { WifiManager manager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); //拿到getWifiApConfiguration()方法 Method method = manager.getClass().getDeclaredMethod("getWifiApConfiguration"); //调用getWifiApConfiguration()方法,获取到 热点的WifiConfiguration WifiConfiguration configuration = (WifiConfiguration) method.invoke(manager); ssid = configuration.SSID; } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); }

以上所述是小编给大家介绍的Android便携式热点的开启状态检测和SSID的获取方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-10-04 16:37:26

Android便携式热点的开启状态检测和SSID的获取方法的相关文章

Android判断设备网络连接状态及判断连接方式的方法_Android

本文实例讲述了Android判断设备网络连接状态及判断连接方式的方法.分享给大家供大家参考,具体如下: 在Android开发过程中,对于一个需要连接网络的Android设备,对设备的网络状态检测是很有必要的!有很多的App都需要连接网络.判断设备是否已经连接网络,并且在连接网络的状态下判断是wifi无线连接还是GPRS手机网络连接,这样就可以在不同的网络连接下去调用不同的方法,处理不同的事情.这些功能都写在了下面的代码中了!请看主要代码如下: /** * 检测网络是否连接 * @return *

Android判断设备网络连接状态及判断连接方式的方法

本文实例讲述了Android判断设备网络连接状态及判断连接方式的方法.分享给大家供大家参考,具体如下: 在Android开发过程中,对于一个需要连接网络的Android设备,对设备的网络状态检测是很有必要的!有很多的App都需要连接网络.判断设备是否已经连接网络,并且在连接网络的状态下判断是wifi无线连接还是GPRS手机网络连接,这样就可以在不同的网络连接下去调用不同的方法,处理不同的事情.这些功能都写在了下面的代码中了!请看主要代码如下: /** * 检测网络是否连接 * @return *

Android编程实现手机自带内部存储路径的获取方法_Android

本文实例讲述了Android编程实现手机自带内部存储路径的获取方法.分享给大家供大家参考,具体如下: 我有一台中兴的Android手机,型号是 ZTE U930HD,手机没有插入外置SD卡(也就是Micro SD Card,原名Trans-flash Card(TF卡),2004年正式更名为Micro SD Card),但是机身自带了一个内置存储卡(也就是eMMC存储,大小为2G). 我把这个手机用数据线插到电脑上,也会看到盘符,通过安装「R.E 管理器」等文件管理应用,也可以管理文件,并且能看

Android编程实现手机自带内部存储路径的获取方法

本文实例讲述了Android编程实现手机自带内部存储路径的获取方法.分享给大家供大家参考,具体如下: 我有一台中兴的Android手机,型号是 ZTE U930HD,手机没有插入外置SD卡(也就是Micro SD Card,原名Trans-flash Card(TF卡),2004年正式更名为Micro SD Card),但是机身自带了一个内置存储卡(也就是eMMC存储,大小为2G). 我把这个手机用数据线插到电脑上,也会看到盘符,通过安装「R.E 管理器」等文件管理应用,也可以管理文件,并且能看

系统-【android】当手机开启了一个wifi热点以后,会接收到什么广播

问题描述 [android]当手机开启了一个wifi热点以后,会接收到什么广播 写了一个开启wifi热点的代码,想通过接收开启wifi热点后系统发出的广播来判断开启结果,不知道这个广播的action是什么 解决方案 // 当网络变化的时候系统会发出一个广播 Broadcast,只要在程序中注册一个广播接收器 BroadcastReceiver,并在 IntentFilter 中添加相应的过滤,这样一旦网络有变化,程序就能监听到 public static final String CONNECT

三星T211如何开启便携式热点

一.将[移动数据]开启. 1.在待机页面下,下拉屏幕顶帘.   2.将[移动数据]开启(显示为绿色表示已经开启).   提示: 确保该手机开启[移动数据]后,可以实现上网功能. 二.将[便携式WLAN热点]开启. 1.在待机页面下,点击[应用程序]图标.   2.点击[设定]图标.   3.点击[更多设置].   4.点击[网络分享和便携式热点].   5.向右滑动屏幕右上角的长方形滑块,即可将[便携式WLAN热点]开启.   6.点击[便携式WLAN热点]可以查看连接WLAN时需要输入的密码(

iOS下的实际网络连接状态检测

序言 网络连接状态检测对于我们的iOS app开发来说是一个非常通用的需求.为了更好的用户体验,我们会在无网络时展现本地或者缓存的内容,并对用户进行合适的提示.对绝大部分iOS开发者来说,从苹果示例代码改变而来的各种Reachablity框架是实现这个需求的普遍选择,比如这个库.但事实上,基于此方案的所有实现,都无法帮助我们检测真正的网络连接状态,它们能检测的只是本地连接状态:这种情况包括但不限于如下场景: 1.现在很流行的公用wifi,需要网页鉴权,鉴权之前无法上网,但本地连接已经建立: 2.

iOS下的实际网络连接状态检测:RealReachability

序言 网络连接状态检测对于我们的iOS app开发来说是一个非常通用的需求.为了更好的用户体验,我们会在无网络时展现本地或者缓存的内容,并对用户进行合适的提示.对绝大部分iOS开发者来说,从苹果示例代码改变而来的各种Reachablity框架是实现这个需求的普遍选择,比如这个库.但事实上,基于此方案的所有实现,都无法帮助我们检测真正的网络连接状态,它们能检测的只是本地连接状态:这种情况包括但不限于如下场景: 1.现在很流行的公用wifi,需要网页鉴权,鉴权之前无法上网,但本地连接已经建立: 2.

Android Service判断设备联网状态详解_Android

      首先,要想获得当前android设备是否处于联网状态,那么android本身给我们提供了一个服务. private ConnectivityManager connectivityManager;//用于判断是否有网络 connectivityManager = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);//获取当前网络的连接服务 NetworkInfo inf