您的位置:首页 > 移动开发 > Android开发

Android获取手机地址(Mac、ip和imei)

2013-12-17 09:21 471 查看
第一种:该方法只有在连接wifi的情况下

WifiManager wifiMan = (WifiManager) getSystemService(Context.WIFI_SERVICE);

WifiInfo info = wifiMan.getConnectionInfo();

String mac = info.getMacAddress();// 获得本机的MAC地址

String ssid = info.getSSID();// 获得本机所链接的WIFI名称

int ipAddress = info.getIpAddress();

String ipString = "";

if (ipAddress != 0) {

ipString = ((ipAddress & 0xff) + "." + (ipAddress >> 8 & 0xff) + "."

+ (ipAddress >> 16 & 0xff) + "." + (ipAddress >> 24 & 0xff));

}

第二种:该方法使用与wifi和3G

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()) {

String ipString = inetAddress.getHostAddress().toString();

if(ipString.length()<=15){ //限制得到ipv4,否则会同时得到ipv4和ipv6

GlobalInfo.IP = ipString;

}



}

}

}

} catch (SocketException ex) {

Log.e("WifiPreference IpAddress", ex.toString());

}



第三种:获得IP地址反射的方法(此方法还未验证)

try {

Field field = info.getClass().getDeclaredField("mIpAddress");

field.setAccessible(true);

ipString = (String) field.get(info);

System.out.println("obj" + ipString);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}







获取IMEI码:

TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);

String imei = "DeviceId(IMEI) = " + tm.getDeviceId();

或String strImei = ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)).getDeviceId();



添加权限:

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

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐