android程序获取WIFI的IP地址和MAC地址
生活随笔
收集整理的這篇文章主要介紹了
android程序获取WIFI的IP地址和MAC地址
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉自:http://my.oschina.net/chenj/blog/68680
?
近日在鼓搗這玩意,拿出來大家分享一下,代碼比較簡單,如果有不懂的再問
<Button android:id="@+id/btn"android:text="獲取IP"android:layout_width="fill_parent"android:layout_height="wrap_content"android:onClick="onclick"/><EditText android:id="@+id/ip_txt"android:layout_width="fill_parent"android:layout_height="wrap_content"/><EditText android:id="@+id/mac_txt"android:layout_width="fill_parent"android:layout_height="wrap_content"/>//這里是權限,添加為AndroidManifest.xml的<manifest>的子節點
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission><uses-permission android:name="android.permission.INTERNET"></uses-permission>//接下來就是正文(注意IPV4與IPV6的區別,見注釋)
package com.wifi;import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration;import android.app.Activity; import android.content.Context; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity {public static String IP; //本機IPpublic static String MAC; //本機MAC Button btn=null;EditText ip_txt=null;EditText mac_txt=null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);btn=(Button)findViewById(R.id.btn);ip_txt=(EditText)findViewById(R.id.ip_txt);mac_txt=(EditText)findViewById(R.id.mac_txt);}public void onclick(View v){switch (v.getId()) {case R.id.btn:IP = getLocalIpAddress(); //獲取本機IPMAC = getLocalMacAddress();//獲取本機MAC ip_txt.setText(IP);mac_txt.setText(MAC);break;}}public String getLocalIpAddress() {try {for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {NetworkInterface intf = en.nextElement();for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {InetAddress inetAddress = enumIpAddr.nextElement();if (!inetAddress.isLoopbackAddress()&&(inetAddress instanceof Inet4Address)) { // 這是只獲取IPV4的,如果要獲取IPV6的,改成instanceof Inet6Addressreturn inetAddress.getHostAddress().toString();}}}} catch (SocketException ex) {Log.e("WifiPreference IpAddress", ex.toString());}return null;}public String getLocalMacAddress() {WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);WifiInfo info = wifi.getConnectionInfo();return info.getMacAddress();} }另一種方法:
WifiManager wifi_service = (WifiManager)getSystemService(WIFI_SERVICE);//檢查wifi是否開啟 if(!wifimanage.isWifiEnabled()) { wifimanage.setWifiEnabled(true); } WifiInfo wifiinfo= wifimanage.getConnectionInfo(); String ip=intToIp(wifiinfo.getIpAddress()); //將獲取的int轉為真正的ip地址,參考的網上的,修改了下 private String intToIp(int i) {return (i & 0xFF)+ "." + ((i >> 8 ) & 0xFF)? + "." + ((i >> 16 ) & 0xFF) +"."+((i >> 24 ) & 0xFF ); }關于WifiManager的用法:http://blog.csdn.net/zd_1471278687/article/details/12158367
轉載于:https://www.cnblogs.com/qrlozte/p/3670832.html
總結
以上是生活随笔為你收集整理的android程序获取WIFI的IP地址和MAC地址的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python截图搜题_用python的O
- 下一篇: 随心玩玩(一)易语言 大漠插件 制作脚本