Merge branch 'dev_arch_opt_3.0' into 'dev_robobus-m1-p-app-module_1.0.0_230112_1.0.0'
Dev arch opt 3.0 See merge request zhjt/AndroidApp/MoGoEagleEye!523
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user