获得设备信息
一、获得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;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。