Android 得到連接熱點的ip的方法
下面給大家介紹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熱點的運行狀態(tài),熱點是否打開,連接到該WIFI熱點的設備數(shù)量,以及連接設備的具體IP和MAC地址。
使用re文件管理器去"/proc/net/arp",打開,發(fā)現(xiàn)連接上熱點的設備信息都在這里了,包括mac ip等。
鑒于此,我們可以在代碼中打開該文件,并獲取WIFI熱點的信息。
獲取WIFI熱點狀態(tài)的方法getWifiApState()和判斷熱點是否可用的方法isApEnabled(),在Android源碼WifiManager.Java中已經實現(xiàn),但是它們是Hide方法,在SDK層面是不能訪問的,如要訪問需要用到java反射的機制。具體代碼實現(xiàn)如下:
其中定義WIFI AP的幾個狀態(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;
對應于WifiMangaer.java中對這幾個狀態(tài)的定義。
獲取WIFI熱點的狀態(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熱點是否可用:
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獲取系統(tǒng)cpu信息,內存,版本,電量等信息的方法詳解
本篇文章對用Android獲取系統(tǒng)cpu信息,內存,版本,電量等信息的方法進行了詳細的分析介紹。需要的朋友參考下2013-05-05
Android實現(xiàn)iPhone晃動撤銷輸入功能 Android仿微信搖一搖功能
這篇文章主要為大家詳細介紹了Android實現(xiàn)iPhone晃動撤銷輸入功能,Android仿微信搖一搖功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
Android?ScrollView實現(xiàn)滾動超過邊界松手回彈
這篇文章主要為大家詳細介紹了Android?ScrollView實現(xiàn)滾動超過邊界松手回彈,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04
Android設置TextView顯示指定個數(shù)字符,超過部分顯示...(省略號)的方法
這篇文章主要介紹了Android設置TextView顯示指定個數(shù)字符,超過部分顯示...(省略號)的方法,涉及Android TextView屬性設置的相關技巧,需要的朋友可以參考下2016-02-02
Android 滑動返回Activity的實現(xiàn)代碼
這篇文章主要介紹了Android 滑動返回Activity的實現(xiàn)代碼的相關資料,這里是訪微信滑動返回主頁的功能,需要的朋友可以參考下2017-07-07
Android開發(fā)之Adobe flash操作工具類
這篇文章主要介紹了Android開發(fā)之Adobe flash操作工具類,可實現(xiàn)flash的安裝及判斷flash是否安裝等功能,需要的朋友可以參考下2017-12-12

