关于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;
    }

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理