国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android 得到連接熱點(diǎn)的ip的方法

2019-12-12 01:13:42
字體:
供稿:網(wǎng)友

下面給大家介紹Android 得到連接熱點(diǎn)的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 是本機(jī)的IP地址,serverAddress 是你所連接的wifi熱點(diǎn)對(duì)應(yīng)的IP地址 

private String intToIp(int paramInt) {return (paramInt & 0xFF) + "." + (0xFF & paramInt >> 8) + "." + (0xFF & paramInt >> 16) + "."+ (0xFF & paramInt >> 24);}

當(dāng)在Android設(shè)備終端上使用Wifi熱點(diǎn)的時(shí)候,需要獲知Wifi熱點(diǎn)的運(yùn)行狀態(tài),熱點(diǎn)是否打開,連接到該WIFI熱點(diǎn)的設(shè)備數(shù)量,以及連接設(shè)備的具體IP和MAC地址。

使用re文件管理器去"/proc/net/arp",打開,發(fā)現(xiàn)連接上熱點(diǎn)的設(shè)備信息都在這里了,包括mac ip等。

鑒于此,我們可以在代碼中打開該文件,并獲取WIFI熱點(diǎn)的信息。

獲取WIFI熱點(diǎn)狀態(tài)的方法getWifiApState()和判斷熱點(diǎn)是否可用的方法isApEnabled(),在Android源碼WifiManager.Java中已經(jīng)實(shí)現(xiàn),但是它們是Hide方法,在SDK層面是不能訪問的,如要訪問需要用到j(luò)ava反射的機(jī)制。具體代碼實(shí)現(xiàn)如下:

其中定義WIFI AP的幾個(gè)狀態(tài)

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; 

對(duì)應(yīng)于WifiMangaer.java中對(duì)這幾個(gè)狀態(tài)的定義。 

獲取WIFI熱點(diǎn)的狀態(tài):

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熱點(diǎn)是否可用: 

public boolean isApEnabled(Context mContext) {      int state = getWifiApState(mContext);      return WIFI_AP_STATE_ENABLING == state || WIFI_AP_STATE_ENABLED == state;    }  

獲取鏈接到當(dāng)前熱點(diǎn)的設(shè)備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; }  //輸出鏈接到當(dāng)前設(shè)備的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); } 

當(dāng)然在應(yīng)用中要添加訪問WIFI設(shè)備的權(quán)限: 

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

否則將會(huì)提示如下錯(cuò)誤:

Cannot get WiFi AP state

總結(jié)

以上所述是小編給大家介紹的Android 得到連接熱點(diǎn)的ip的方法 ,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)武林網(wǎng)網(wǎng)站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 昔阳县| 庐江县| 固镇县| 柳河县| 墨脱县| 葫芦岛市| 杂多县| 莆田市| 简阳市| 苏尼特左旗| 轮台县| 阿克苏市| 化州市| 从江县| 金寨县| 山西省| 历史| 威远县| 双牌县| 连州市| 弥渡县| 永兴县| 临城县| 南召县| 如皋市| 耿马| 肥西县| 调兵山市| 伊川县| 南郑县| 郓城县| 高要市| 元谋县| 商南县| 丹江口市| 阆中市| 宝鸡市| 东港市| 九龙城区| 凭祥市| 宽甸|