获得设备信息

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

GiraKoo
0 声望0 粉丝

Practice makes perfect.