Android获取设备相关信息
获取设备相关信息,是很多App想要做的事情。Android设备相关的信息有:电话相关的信息,Wifi模块相关信息。下面分别介绍一下相关方法。
获取电话相关信息
获取电话相关信息,主要是利用TelephonyManager
这个service提供的接口。这里有很详细的文章介绍。这里主要列几个常用的接口:
TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
String imei = tm.getDeviceId(); //取出IMEI
String tel = tm.getLine1Number(); //取出MSISDN,很可能为空
String iccid =tm.getSimSerialNumber(); //取出ICCID
String imsi =tm.getSubscriberId(); //取出IMSI
注意,使用这个Sevice需要在AndroidManifest.xml中添加如下权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
获取设备WIFI的MAC地址
获取MAC地址就更简单,利用WifiManager
提供的接口。方法如下:
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
String mac = info.getMacAddress();
获取IP地址的方法如下:
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()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
Log.e("WifiPreference IpAddress", ex.toString());
}
return null;
}
注意,需要在AndroidManifest.xml中添加如下权限:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />