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

android 常用系统信息获取总结

2014-04-18 17:56 381 查看
最近在帮客户做技术实施方案,需要获取系统这块的内容,今天专程用了两个小时从网上搜集的资料做了个总结;

转载自:http://blog.csdn.net/waterlxj/article/details/24037585

博主微信号:googlf



------------------------------------code start-----------------------------------

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

// 所有的设备都可以返回一个TelephonyManager.getDeviceId()
// 如果是GSM网络,返回IMEI;如果是CDMA网络,返回MEID
// 手机的唯一标识,像GSM手机的 IMEI 和 CDMA手机的 MEID. 但在中国山寨手机导致这个号码不是唯一标识了
// 取出的值是international mobile Equipment identity手机唯一标识码,即imei;
String deviceid = tm.getDeviceId();

// 对于移动的用户,手机号码(MDN)保存在运营商的服务器中,而不是保存在SIM卡里。SIM卡只保留了IMSI和一些验证信息

// 取出的 值是手机号,即MSISDN : mobile subscriber ISDN用户号码,这个是我们说的139,136那个号码;
// 是通过SIM卡相关文件记录得到的数据
// 归结到是否可以从SIM卡的EFmsisdn文件取出手机号码了,不幸的是一般运营商不会把用户号码写在这个文件的,为什么呢?
// 因为这个手机号码是在用户买到卡并开通时才将IMSI和MSISDN对应上的,卡内生产出来时只有IMSI,你不知道用户喜欢那个手机号码,因此一般不先对应IMSI和MSISDN,即时有对应也不写这个文件的。
String tel = tm.getLine1Number();

// 所有的GSM设备(测试设备都装载有SIM卡) 可以返回一个TelephonyManager.getSimSerialNumber()
// 所有的CDMA 设备对于 getSimSerialNumber() 却返回一个空值!
// 360手机卫士可能会影响到imei和imsi的获取,禁止了“获取该应用获取设备信息”,改为“允许”即可正常获取IMEI、IMSI
// 返回SIM卡的序列号(ICCID) ICCID:ICC
// identity集成电路卡标识,这个是唯一标识一张卡片物理号码的
String iccid = tm.getSimSerialNumber();

//
sim卡的序列号(IMSI),international
//
mobiles subscriber
// identity国际移动用户号码标识,
String imsi = tm.getSubscriberId();

// 获取imei和imsi的第二种方法
// String imsi2 =android.os.SystemProperties.get(
// android.telephony.TelephonyProperties.PROPERTY_IMSI);
// String imei2
// =android.os.SystemProperties.get(android.telephony.TelephonyProperties.PROPERTY_IMEI);

// 此处获取设备ANDROID_ID
// 所有添加有谷歌账户的设备可以返回一个 ANDROID_ID
// 所有的CDMA设备对于 ANDROID_ID 和
// TelephonyManager.getDeviceId()返回相同的值(只要在设置时添加了谷歌账户)
// 有些山寨手机这个号码是一个…
// 是一个64位的数字,在设备第一次启动的时候随机生成并在设备的整个生命周期中不变。(如果重新进行出厂设置可能会改变)
String android_id = Secure.getString(this.getContentResolver(),
Secure.ANDROID_ID);

// 获取Android手机型号和OS的版本号
String mobileName = Build.DEVICE;
String osVersion = Build.VERSION.RELEASE;

WifiManager wifi = (WifiManager)
this
.getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();

String macAddress = info.getMacAddress();// 更换为MacAddressWifi地址
String softwareVersion = tm.getDeviceSoftwareVersion();// String

// String versionName = null;
// String versionCode = null;
// PackageManagerpm = this.getPackageManager();
// PackageInfo pi;
// try {
// pi = pm.getPackageInfo(this.getPackageName(), 0);
// versionName = pi.versionName;
// versionCode = String.valueOf(pi.versionCode);
// } catch (NameNotFoundException e) {
// //
TODO Auto-generated catch block
// e.printStackTrace();
// }

//获取当前手机支持的移动网络类型
String phoneType = null;
switch (tm.getPhoneType()) {
case TelephonyManager.PHONE_TYPE_NONE:
phoneType =
"NONE: ";
break;
case TelephonyManager.PHONE_TYPE_GSM:
phoneType =
"GSM: IMEI";
break;
case TelephonyManager.PHONE_TYPE_CDMA:
phoneType =
"CDMA: MEID/ESN";
break;
/*
* for API Level 11 or above case TelephonyManager.PHONE_TYPE_SIP:
* return "SIP";
*/

default:
phoneType =
"UNKNOWN: ID";
break;
}

String sytemInfo = "设备名称 : " + mobileName +"\n系统版本:" + osVersion +"\n软件版本: "
+ softwareVersion +"\n设备ID(imei) " + deviceid +"\n"
+"手机号 : " + tel +"\n" +"SIM卡集成电路卡标识 : " + iccid +"\n"
+"SIM国际移动号码标示 : " + imsi +"\n" +"ANDROID_ID : " + android_id
+
"\n手机网络类型: " + phoneType + "\nMAC地址: " + macAddress;
------------------------------------code end-----------------------------------

源码位置:

转载自:http://blog.csdn.net/waterlxj/article/details/24037585

博主微信号:googlf
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: