[dev_arch_opt_3.0]
[Change] [ 1、优化获取设备SN标志,设备序列号>AndroidID>随机ID ] Signed-off-by: donghongyu <donghongyu@zhidaoauto.com>
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package com.mogo.och.bus.bean;
|
||||
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
|
||||
import com.mogo.commons.network.Utils;
|
||||
|
||||
public
|
||||
/**
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.mogo.och.bus.bean;
|
||||
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
|
||||
import com.mogo.commons.network.Utils;
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.mogo.och.bus.bean;
|
||||
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
|
||||
import com.mogo.commons.network.Utils;
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.mogo.och.bus.bean;
|
||||
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
|
||||
import com.mogo.commons.network.Utils;
|
||||
|
||||
/**
|
||||
* 查询下车乘客请求参数
|
||||
|
||||
@@ -15,7 +15,6 @@ import com.mogo.commons.constants.SharedPrefsConstants
|
||||
import com.mogo.commons.debug.DebugConfig
|
||||
import com.mogo.commons.module.status.MogoStatusManager
|
||||
import com.mogo.commons.network.NetConfigUtils
|
||||
import com.mogo.commons.network.Utils
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_CLOUD_CONNECT_FAIL
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_CLOUD_CONNECT_LOST
|
||||
@@ -32,10 +31,7 @@ import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.utilcode.util.AppUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ProcessUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadPoolService
|
||||
import com.mogo.eagle.core.utilcode.util.TimeUtils
|
||||
import com.mogo.eagle.core.utilcode.util.*
|
||||
import com.rousetime.android_startup.AndroidStartup
|
||||
import com.zhjt.service.chain.ChainLog
|
||||
import com.zhjt.service.chain.TracingConstants.Endpoint.Companion.PAD
|
||||
@@ -114,9 +110,9 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
|
||||
// TODO 现在这块逻辑因为网约车业务那后台的限制,还没有更换,条件成熟后替换为 DeviceIdUtils.getWidevineIDWithMd5(context)
|
||||
// 这里影响当前Activity的身份信息,多进程先保持与原来一样,主进程为司机端,:passenger 进程为乘客端
|
||||
if (ProcessUtils.getCurrentProcessName().contains(":passenger")) {
|
||||
clientConfig.thirdPartyDeviceId = Utils.getDevicesId() + "_passenger"
|
||||
clientConfig.thirdPartyDeviceId = DeviceUtils.getDeviceSN() + "_passenger"
|
||||
} else {
|
||||
clientConfig.thirdPartyDeviceId = Utils.getDevicesId()
|
||||
clientConfig.thirdPartyDeviceId = DeviceUtils.getDeviceSN()
|
||||
}
|
||||
//设置长链接的secretKey 通过SHA1和包名找中台服务生成,后续包名分渠道,需要做对应操作
|
||||
clientConfig.secretKey = "YMj2VFDFxJ3Q4gNoZceJ"
|
||||
|
||||
@@ -12,7 +12,7 @@ import com.mogo.eagle.core.function.v2x.internal.data.V2XMarkerResponse
|
||||
import com.mogo.eagle.core.function.v2x.internal.http.api.V2XApiService
|
||||
import com.mogo.eagle.core.function.v2x.internal.http.body.V2XRefreshEntity
|
||||
import com.mogo.eagle.core.function.v2x.internal.http.callback.IV2XRefreshCallback
|
||||
import com.mogo.eagle.core.function.v2x.internal.utils.DeviceUtils
|
||||
import com.mogo.eagle.core.utilcode.util.DeviceUtils
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
@@ -64,7 +64,7 @@ internal class V2XRefreshModel {
|
||||
handled
|
||||
})
|
||||
this["netType"] = CommonUtils.getNetworkType(config.context)
|
||||
this["cellId"] = DeviceUtils.getCellId(config.context) ?: ""
|
||||
this["cellId"] = DeviceUtils.getCellId() ?: ""
|
||||
this["sn"] = config.aiCloudConfig.sn
|
||||
this["ticket"] = config.aiCloudConfig.token
|
||||
this["sig"] = SignUtil.createSign(this, "JGjZx6")
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
package com.mogo.eagle.core.function.v2x.internal.utils
|
||||
|
||||
import android.Manifest
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.content.pm.PackageManager
|
||||
import android.telephony.CellLocation
|
||||
import android.telephony.TelephonyManager
|
||||
import android.telephony.cdma.CdmaCellLocation
|
||||
import android.telephony.gsm.GsmCellLocation
|
||||
import java.lang.Exception
|
||||
|
||||
internal class DeviceUtils {
|
||||
|
||||
companion object {
|
||||
|
||||
@SuppressLint("MissingPermission")
|
||||
@JvmStatic
|
||||
fun getCellId(context: Context): String? {
|
||||
val tm = context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
|
||||
val pm = context.packageManager
|
||||
val accessCoarseLocationPermission = PackageManager.PERMISSION_GRANTED ==
|
||||
pm.checkPermission(Manifest.permission.ACCESS_COARSE_LOCATION, context.packageName)
|
||||
val accessFineLocationPermission = PackageManager.PERMISSION_GRANTED ==
|
||||
pm.checkPermission(Manifest.permission.ACCESS_FINE_LOCATION, context.packageName)
|
||||
if (!accessCoarseLocationPermission || !accessFineLocationPermission) return "noPermission"
|
||||
var location: CellLocation? = null
|
||||
try {
|
||||
location = tm.cellLocation
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
if (location != null) {
|
||||
// Gsm网络 , 联通移动的网络属于这一套
|
||||
if (location is GsmCellLocation) {
|
||||
val cellid = location.cid
|
||||
return cellid.toString()
|
||||
// Cdma网络 , 电信网络属于这一种
|
||||
} else if (location is CdmaCellLocation) {
|
||||
return location.baseStationId.toString()
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.mogo.eagle.core.utilcode.util">
|
||||
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
||||
|
||||
@@ -5,9 +5,11 @@ import static android.Manifest.permission.CHANGE_WIFI_STATE;
|
||||
import static android.Manifest.permission.INTERNET;
|
||||
import static android.content.Context.WIFI_SERVICE;
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.net.Uri;
|
||||
@@ -15,7 +17,10 @@ import android.net.wifi.WifiInfo;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.os.Build;
|
||||
import android.provider.Settings;
|
||||
import android.telephony.CellLocation;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.telephony.cdma.CdmaCellLocation;
|
||||
import android.telephony.gsm.GsmCellLocation;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
@@ -528,6 +533,41 @@ public final class DeviceUtils {
|
||||
return prefix + UUID.nameUUIDFromBytes(id.getBytes()).toString().replace("-", "");
|
||||
}
|
||||
|
||||
public static String getCellId() {
|
||||
TelephonyManager tm = (TelephonyManager) Utils.getApp().getSystemService(Context.TELEPHONY_SERVICE);
|
||||
if (tm == null) {
|
||||
return "";
|
||||
}
|
||||
|
||||
PackageManager pm = Utils.getApp().getPackageManager();
|
||||
boolean accessCoarseLocationPermission = (PackageManager.PERMISSION_GRANTED ==
|
||||
pm.checkPermission(Manifest.permission.ACCESS_COARSE_LOCATION, Utils.getApp().getPackageName()));
|
||||
boolean accessFineLocationPermission = (PackageManager.PERMISSION_GRANTED ==
|
||||
pm.checkPermission(Manifest.permission.ACCESS_FINE_LOCATION, Utils.getApp().getPackageName()));
|
||||
if (!accessCoarseLocationPermission || !accessFineLocationPermission)
|
||||
return "noPermission";
|
||||
|
||||
CellLocation location = null;
|
||||
try {
|
||||
location = tm.getCellLocation();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (location != null) {
|
||||
// Gsm网络 , 联通移动的网络属于这一套
|
||||
if (location instanceof GsmCellLocation) {
|
||||
GsmCellLocation gsmLoc = (GsmCellLocation) location;
|
||||
int cellid = gsmLoc.getCid();
|
||||
return String.valueOf(cellid);
|
||||
// Cdma网络 , 电信网络属于这一种
|
||||
} else if (location instanceof CdmaCellLocation) {
|
||||
CdmaCellLocation cdmaLoc = (CdmaCellLocation) location;
|
||||
return String.valueOf(cdmaLoc.getBaseStationId());
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断用户是否打开系统定位服务
|
||||
*
|
||||
@@ -574,10 +614,10 @@ public final class DeviceUtils {
|
||||
// 中科创达 EB5获取SN
|
||||
serial = (String) get.invoke(c, "persist.device.sn");
|
||||
}
|
||||
if (TextUtils.isEmpty(serial)) {
|
||||
// 联想PAD 获取SN
|
||||
serial = (String) get.invoke(c, "ro.odm.lenovo.gsn");
|
||||
}
|
||||
// if (TextUtils.isEmpty(serial)) {
|
||||
// // 联想PAD 获取SN,2022-2023款PAD无法获取暂时不启用
|
||||
// serial = (String) get.invoke(c, "ro.odm.lenovo.gsn");
|
||||
// }
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@@ -609,6 +649,26 @@ public final class DeviceUtils {
|
||||
return productModel;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return 获取Fota系统版本
|
||||
*/
|
||||
public static String getFotaVersion() {
|
||||
String fotaVersion = "";
|
||||
try {
|
||||
Class<?> c = Class.forName("android.os.SystemProperties");
|
||||
Method get = c.getMethod("get", String.class);
|
||||
fotaVersion = (String) get.invoke(c, "ro.fota.version");
|
||||
if (!TextUtils.isEmpty(fotaVersion)) {
|
||||
fotaVersion = fotaVersion.trim();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return fotaVersion;
|
||||
}
|
||||
|
||||
|
||||
private static String getSerialnoNumbers() {
|
||||
final String serialnoStr = "[ro.boot.serialno]";
|
||||
try {
|
||||
@@ -633,4 +693,29 @@ public final class DeviceUtils {
|
||||
}
|
||||
return serialnoStr;
|
||||
}
|
||||
|
||||
public static final String KEY_DEVICE_ID = "deviceId";
|
||||
|
||||
/**
|
||||
* 获取设备SN信息,首次获取后会存储SP,后续获取都从SP获取
|
||||
*
|
||||
* @return 当前的设备SN信息,优先使用设备固定的sn,
|
||||
*/
|
||||
public static String getDeviceSN() {
|
||||
String devicesSN = SPUtils.getInstance().getString(KEY_DEVICE_ID);
|
||||
if (TextUtils.isEmpty(devicesSN)) {
|
||||
// 获取设备唯一SN
|
||||
devicesSN = getSerialNumber();
|
||||
// 获取 android id of device
|
||||
if (TextUtils.isEmpty(devicesSN)) {
|
||||
devicesSN = getAndroidID();
|
||||
// 获取随机的设备ID
|
||||
if (TextUtils.isEmpty(devicesSN)) {
|
||||
devicesSN = getUniqueDeviceId();
|
||||
}
|
||||
}
|
||||
SPUtils.getInstance().put(KEY_DEVICE_ID, devicesSN);
|
||||
}
|
||||
return devicesSN;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ import com.mogo.eagle.core.network.ServerParam;
|
||||
import com.mogo.eagle.core.network.utils.GsonUtil;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.util.CommonUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.DeviceIdUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.DeviceUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.WindowUtils;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
@@ -38,7 +38,7 @@ public class ParamsUtil {
|
||||
params.putAll(location);
|
||||
}
|
||||
params.put(ServerParam.NET_TYPE, CommonUtils.getNetworkType(AbsMogoApplication.getApp()));
|
||||
params.put(ServerParam.CELL_ID, Utils.getCellId(AbsMogoApplication.getApp()));
|
||||
params.put(ServerParam.CELL_ID, DeviceUtils.getCellId());
|
||||
|
||||
// params.put( ServerParam.DISPLAY_ID, DeviceUtil.getSystemVersion() );
|
||||
params.put(ServerParam.SN, MoGoAiCloudClientConfig.getInstance().getSn());
|
||||
@@ -61,10 +61,10 @@ public class ParamsUtil {
|
||||
STATIC_PARAMS.put(ServerParam.VERSION_NAME, CommonUtils.getVersionName(AbsMogoApplication.getApp()));
|
||||
STATIC_PARAMS.put(ServerParam.SCREEN_PIXELS, WindowUtils.getScreenPixels(AbsMogoApplication.getApp()));
|
||||
STATIC_PARAMS.put(ServerParam.ANDROID_ID, CommonUtils.getAndroidID(AbsMogoApplication.getApp()));
|
||||
STATIC_PARAMS.put(ServerParam.DEVICE_ID, DeviceIdUtils.getDeviceId(AbsMogoApplication.getApp()));
|
||||
STATIC_PARAMS.put(ServerParam.DEVICE_ID, DeviceUtils.getDeviceSN());
|
||||
STATIC_PARAMS.put(ServerParam.IMEI, CommonUtils.getIMEI(AbsMogoApplication.getApp()));
|
||||
STATIC_PARAMS.put(ServerParam.IMSI, CommonUtils.getIMSI(AbsMogoApplication.getApp()));
|
||||
STATIC_PARAMS.put(ServerParam.FOTA_VERSION, Utils.getFotaVersion());
|
||||
STATIC_PARAMS.put(ServerParam.FOTA_VERSION, DeviceUtils.getFotaVersion());
|
||||
STATIC_PARAMS.put(ServerParam.END_POINT, ServerParam.END_POINT_CAR);
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ public class ParamsUtil {
|
||||
public static Map<String, Object> getAnalyticsCustomParams() {
|
||||
Map<String, Object> map = new ArrayMap<>();
|
||||
map.put("debug", DebugConfig.isDebug() ? 1 : 0);
|
||||
String fota = Utils.getFotaVersion();
|
||||
String fota = DeviceUtils.getFotaVersion();
|
||||
map.put("systemversion", TextUtils.isEmpty(fota) ? DebugConfig.getProductFlavor() : fota);
|
||||
map.put("sn", MoGoAiCloudClientConfig.getInstance().getSn());
|
||||
return map;
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
package com.mogo.commons.network;
|
||||
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.telephony.CellLocation;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.telephony.cdma.CdmaCellLocation;
|
||||
import android.telephony.gsm.GsmCellLocation;
|
||||
|
||||
import com.mogo.commons.AbsMogoApplication;
|
||||
import com.mogo.commons.debug.DebugConfig;
|
||||
import com.mogo.eagle.core.utilcode.util.DeviceIdUtils;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
/**
|
||||
* Created by congtaowang on 2018/3/29.
|
||||
*/
|
||||
|
||||
public class Utils {
|
||||
|
||||
public static String getCellId(Context context) {
|
||||
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
if (tm == null) {
|
||||
return "";
|
||||
}
|
||||
|
||||
PackageManager pm = context.getPackageManager();
|
||||
boolean accessCoarseLocationPermission = (PackageManager.PERMISSION_GRANTED ==
|
||||
pm.checkPermission(Manifest.permission.ACCESS_COARSE_LOCATION, context.getPackageName()));
|
||||
boolean accessFineLocationPermission = (PackageManager.PERMISSION_GRANTED ==
|
||||
pm.checkPermission(Manifest.permission.ACCESS_FINE_LOCATION, context.getPackageName()));
|
||||
if (!accessCoarseLocationPermission || !accessFineLocationPermission)
|
||||
return "noPermission";
|
||||
|
||||
CellLocation location = null;
|
||||
try {
|
||||
location = tm.getCellLocation();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (location != null) {
|
||||
// Gsm网络 , 联通移动的网络属于这一套
|
||||
if (location instanceof GsmCellLocation) {
|
||||
GsmCellLocation gsmLoc = (GsmCellLocation) location;
|
||||
int cellid = gsmLoc.getCid();
|
||||
return String.valueOf(cellid);
|
||||
// Cdma网络 , 电信网络属于这一种
|
||||
} else if (location instanceof CdmaCellLocation) {
|
||||
CdmaCellLocation cdmaLoc = (CdmaCellLocation) location;
|
||||
return String.valueOf(cdmaLoc.getBaseStationId());
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
public static final String GET = "get";
|
||||
public static final String GSM_SERIAL = "gsm.serial";
|
||||
public static final String BYD_SERIAL = "ro.serialno";
|
||||
public static final String FOTA_VERSION = "ro.fota.version";
|
||||
public static final String PROPERTIES = "android.os.SystemProperties";
|
||||
|
||||
public static String getDevicesId() {
|
||||
if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE) {
|
||||
return DeviceIdUtils.getDeviceId(AbsMogoApplication.getApp());
|
||||
}
|
||||
return getSystemProperties(GSM_SERIAL);
|
||||
}
|
||||
|
||||
public static String getFotaVersion() {
|
||||
return getSystemProperties(FOTA_VERSION);
|
||||
}
|
||||
|
||||
public static String getSystemProperties(String name) {
|
||||
String value = "";
|
||||
|
||||
try {
|
||||
Class<?> c = Class.forName(PROPERTIES);
|
||||
Method get = c.getMethod(GET, String.class);
|
||||
value = (String) get.invoke(c, name);
|
||||
} catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException | IllegalAccessException var3) {
|
||||
var3.printStackTrace();
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.mogo.test.crashreport.apm;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.apm.insight.AttachUserData;
|
||||
@@ -16,9 +15,8 @@ import com.mogo.commons.debug.DebugConfig;
|
||||
import com.mogo.eagle.core.data.bindingcar.CarInfo;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
|
||||
import com.mogo.eagle.core.utilcode.util.AppUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.CommonUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.DeviceIdUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.DeviceUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils;
|
||||
import com.mogo.test.crashreport.CrashReportConstants;
|
||||
import com.mogo.test.crashreport.ITestCrashReportProvider;
|
||||
@@ -92,7 +90,7 @@ public class ApmCrashReportProvider implements ITestCrashReportProvider {
|
||||
if (sn != null && !sn.isEmpty()) {
|
||||
crash.config().setDeviceId(sn);
|
||||
} else {
|
||||
crash.config().setDeviceId(DeviceIdUtils.getDeviceId(context));
|
||||
crash.config().setDeviceId(DeviceUtils.getDeviceSN());
|
||||
}
|
||||
crash.addTags(MAP_SDK_VERSION, mapSDKVersion);
|
||||
crash.addTags("CITYCODE", mCityCode);
|
||||
@@ -104,7 +102,7 @@ public class ApmCrashReportProvider implements ITestCrashReportProvider {
|
||||
|
||||
HashMap<String, String> dimension = new HashMap<>();
|
||||
//维度值
|
||||
dimension.put("Devices_SN_DeviceId", sn + "__" + DeviceIdUtils.getDeviceId(context));
|
||||
dimension.put("Devices_SN_DeviceId", sn + "__" + DeviceUtils.getDeviceSN());
|
||||
// dimension.put("Devices_SN_WidevineID_MD5", sn + "__" + DeviceIdUtils.getWidevineIDWithMd5(context));
|
||||
// dimension.put("Devices_SN_WidevineID", sn + "__" + DeviceIdUtils.getWidevineID(context));
|
||||
dimension.put(MAP_SDK_VERSION, mapSDKVersion);
|
||||
|
||||
Reference in New Issue
Block a user