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" />