取得设施信息

一、取得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;    }