取得设施信息
一、取得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; }