乐趣区

关于android:Android获得设备信息

取得设施信息

一、取得 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;
    }
退出移动版