下面给大家介绍Android 得到连接热点的ip的方法 ,具体代码如下所示:
WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); if (!wifiManager.isWifiEnabled()) { System.out.println("================="); wifiManager.setWifiEnabled(true); } WifiInfo wifiInfo = wifiManager.getConnectionInfo(); String IPAddress = intToIp(wifiInfo.getIpAddress()); System.out.println("IPAddress-->>" + IPAddress); DhcpInfo dhcpinfo = wifiManager.getDhcpInfo(); String serverAddress = intToIp(dhcpinfo.serverAddress); System.out.println("serverAddress-->>" + serverAddress);
其中IPAddress 是本机的IP地址,serverAddress 是你所连接的wifi热点对应的IP地址
private String intToIp(int paramInt) { return (paramInt & 0xFF) + "." + (0xFF & paramInt >> 8) + "." + (0xFF & paramInt >> 16) + "." + (0xFF & paramInt >> 24); }
当在Android设备终端上使用Wifi热点的时候,需要获知Wifi热点的运行状态,热点是否打开,连接到该WIFI热点的设备数量,以及连接设备的具体IP和MAC地址。
使用re文件管理器去"/proc/net/arp",打开,发现连接上热点的设备信息都在这里了,包括mac ip等。
鉴于此,我们可以在代码中打开该文件,并获取WIFI热点的信息。
获取WIFI热点状态的方法getWifiApState()和判断热点是否可用的方法isApEnabled(),在Android源码WifiManager.Java中已经实现,但是它们是Hide方法,在SDK层面是不能访问的,如要访问需要用到java反射的机制。具体代码实现如下:
其中定义WIFI AP的几个状态
public static final int WIFI_AP_STATE_DISABLING = 10; public static final int WIFI_AP_STATE_DISABLED = 11; public static final int WIFI_AP_STATE_ENABLING = 12; public static final int WIFI_AP_STATE_ENABLED = 13; public static final int WIFI_AP_STATE_FAILED = 14;
对应于WifiMangaer.java中对这几个状态的定义。
获取WIFI热点的状态:
public int getWifiApState(Context mContext) { WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE); try { Method method = wifiManager.getClass().getMethod("getWifiApState"); int i = (Integer) method.invoke(wifiManager); Log.i(TAG,"wifi state: " + i); return i; } catch (Exception e) { Log.e(TAG,"Cannot get WiFi AP state" + e); return WIFI_AP_STATE_FAILED; } }
判断Wifi热点是否可用:
public boolean isApEnabled(Context mContext) { int state = getWifiApState(mContext); return WIFI_AP_STATE_ENABLING == state || WIFI_AP_STATE_ENABLED == state; }
获取链接到当前热点的设备IP:
private ArrayList<String> getConnectedHotIP() { ArrayList<String> connectedIP = new ArrayList<String>(); try { BufferedReader br = new BufferedReader(new FileReader( "/proc/net/arp")); String line; while ((line = br.readLine()) != null) { String[] splitted = line.split(" +"); if (splitted != null && splitted.length >= 4) { String ip = splitted[0]; connectedIP.add(ip); } } } catch (Exception e) { e.printStackTrace(); } return connectedIP; } //输出链接到当前设备的IP地址 public void printHotIp() { ArrayList<String> connectedIP = getConnectedHotIP(); StringBuilder resultList = new StringBuilder(); for (String ip : connectedIP) { resultList.append(ip); resultList.append("\n"); } System.out.print(resultList); Log.d(TAG,"---->>heww resultList="+resultList); }
当然在应用中要添加访问WIFI设备的权限:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
否则将会提示如下错误:
Cannot get WiFi AP state
总结
以上所述是小编给大家介绍的Android 得到连接热点的ip的方法 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
本文向大家介绍Android获取热点主机ip和连接热点手机ip的代码,包括了Android获取热点主机ip和连接热点手机ip的代码的使用技巧和注意事项,需要的朋友参考一下 其中定义WIFI AP的几个状态 对应于WifiMangaer.java中对这几个状态的定义。 获取WIFI热点的状态: 判断Wifi热点是否可用: 当然在应用中要添加访问WIFI设备的权限: 获取热点主机ip地址的代码: 总结
我对使用jsoup很陌生,我只想问一下,我是否必须在公共静态void main中使用jsoup代码,就像我在网上研究时看到的那样,还是可以在任何其他方法中使用它。我和Jsoup也有问题。连接()。get()。我的应用程序在运行时总是停止。我已经添加了android。准许互联网连接到我的AndroidManifest。xml。我读了烹饪书,决定从解析文档开始,但仍然生成相同的结果——不幸的是,应用程
本文向大家介绍Android 连接Wifi和创建Wifi热点的实例,包括了Android 连接Wifi和创建Wifi热点的实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了连接Wifi和创建Wifi热点的方法。分享给大家供大家参考,具体如下: android的热点功能不可见,用了反射的技术搞定之外。 Eclipse设置语言为utf-8才能查看中文注释 上代码: MainActivity
我想检索连接到智能手机WiFi热点的所有设备的IP地址。在Android 10及以下版本中,我能够通过执行以下代码获得此列表: 然而,在Android 11中,IP命令似乎不再有效(https://developer.android.com/training/articles/user-data-ids#mac-11岁以上) 在Android11中,有没有其他方法可以获取已连接客户端的IP地址?
我使用以下代码读取连接的设备ip地址如何获取通过手机连接的设备数量,但我得到的列表是错误的,即列表显示了连接到热点但当前已断开连接的早期设备。有没有其他方法可以更新列表。或者如何刷新/proc/net/arp文件以获取最新列表 也阅读这是有关arp在linux上,但不找到出路。
我目前正在使用 获取执行设备的IP地址。如果该设备连接到一个“公共”wlan网络,并且该设备连接到一个wifi网络,该网络由另一个Android设备通过hotspot托管,则该功能正常。如果设备未连接到任何wifi网络,则返回“0.0.0.0”(正确)。但如果设备通过提供热点来承载wifi网络,methode仍然返回“0.0.0.0”。我如何在“自己的wifi网络”中获取热点提供设备的真实IP地址