取得设施信息
一、取得 IMEI 信息
国内挪动设施识别码(International Mobile Equipment Identity,IMEI),即通常所说的手机序列号、手机“串号”,用于在移动电话网络中辨认每一部独立的手机等挪动通信设施,相当于移动电话的身份证。序列号共有 15~17 位数字,前 8 位(TAC)是型号核准号码(晚期为 6 位),是辨别手机品牌和型号的编码。
/**
* 更新 IMEI 数据
* @param app Application 对象
*/
@SuppressLint("MissingPermission")
private void updateIMEI(@NonNull Application app) {
// 查看取得 IMEI 的权限
if (app.checkCallingOrSelfPermission(IMEI_PERMISSION_NAME) == PackageManager.PERMISSION_GRANTED) {TelephonyManager tm = (TelephonyManager) app.getApplicationContext().getSystemService(Activity.TELEPHONY_SERVICE);
if (tm != null) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// 取得 IMEI ID
mIMEI = tm.getImei();}
else {mIMEI = tm.getDeviceId();
}
Log.i(TAG, "IMEI:" + mIMEI);
}
else {Log.e(TAG, "Can NOT get IMEI!");
}
}
else {Log.e(TAG, "IMEI Permission has been DENIED!");
}
}
二、取得一般设施属性
上面代码是取得设施的一些常见属性
private JSONObject getDeviceJson() {JSONObject ret = new JSONObject();
try {ret.put("IMEI", mIMEI);
ret.put("brand", Build.BRAND);
ret.put("model", Build.MODEL);
ret.put("release", Build.VERSION.RELEASE);
ret.put("language", Locale.getDefault().getLanguage());
ret.put("board", Build.BOARD);
ret.put("manufacturer", Build.MANUFACTURER);
}
catch (Exception e) {Log.e(TAG, "JSON Construct failed.");
e.printStackTrace();}
Log.i(TAG, "ret:" + ret);
return ret;
}