Browse Source

优化设备id获取,优先使用imei和sn序列号,获取不到则使用AndroidId

weizhengliang 6 months ago
parent
commit
01b5554c29

+ 0 - 64
android_mobile/src/main/yd_w_xiaomi_2/code/com/wdkl/ncs/android/component/home/util/HandleTcpConnect.kt.bak

@@ -1,64 +0,0 @@
-package com.wdkl.ncs.android.component.home.util
-
-import android.annotation.SuppressLint
-import android.util.Log
-import com.wdkl.ncs.android.middleware.common.Constants
-import com.wdkl.ncs.android.lib.utils.showMessage
-import com.wdkl.ncs.android.lib.vo.MessageEvent
-import com.wdkl.ncs.android.middleware.tcp.NettyClient
-import org.greenrobot.eventbus.EventBus
-
-class HandleTcpConnect {
-    val TAG = HandleTcpConnect::class.simpleName
-
-    /*伴生对象*/
-    companion object {
-        var instance = HandleTcpConnect()
-    }
-
-    @SuppressLint("CheckResult")
-    fun tcpInitConnect(){
-        Log.d(TAG, "TCP.开始初始连接")
-        NettyClient.instance.connect(Constants.tcpServer, Constants.tcpPort, Constants.heartBeat.toLong()).subscribe {
-            if (it){
-                Log.d(TAG, "TCP.连接成功")
-                EventBus.getDefault().post(MessageEvent("tcp connected", Constants.EVENT_TCP_CONNECTED))
-            } else {
-                Log.e(TAG, "TCP.连接失败")
-                EventBus.getDefault().post(MessageEvent("tcp connected", Constants.EVENT_TCP_BREAK))
-            }
-        }
-    }
-
-    @SuppressLint("CheckResult")
-    fun tcpReConnect(){
-        Log.d(TAG, "TCP.开始重新连接")
-        NettyClient.instance.reConnect().doOnError {
-            it.message?.let { it1 -> Log.e(TAG, it1) }
-        }.subscribe {
-            if (it){
-                Log.d(TAG, "TCP.重连成功")
-            } else {
-                Log.e(TAG, "TCP.重连失败")
-            }
-        }
-    }
-
-    @SuppressLint("CheckResult")
-    fun tcpReConnectWithMsgShow(){
-        Log.d(TAG, "TCP.开始重新连接")
-        //showMessage("服务连接失败,正在重连")
-        NettyClient.instance.reConnect().doOnError {
-            it.message?.let { it1 -> Log.e(TAG, it1) }
-        }.subscribe{
-            if (it){
-                Log.d(TAG, "服务重连成功")
-                //EventBus.getDefault().post(MessageEvent("tcp connected", Constants.EVENT_TCP_CONNECTED))
-                //showMessage("重连成功")
-            } else {
-                Log.d(TAG, "服务重连失败")
-                //showMessage("重连失败,请尝试重启APP")
-            }
-        }
-    }
-}

+ 28 - 25
common/src/main/code/com/wdkl/ncs/android/lib/utils/Util.kt

@@ -16,7 +16,7 @@ import java.io.IOException
 
 object Util {
 
-    var IMEI = ""
+    var deviceImei = ""
     var UUID_FILE_NAME = "wdkl_uuid.txt"
 
     /*
@@ -24,40 +24,43 @@ object Util {
     */
     @SuppressLint("MissingPermission", "PrivateApi")
     fun getIMEI(context: Context): String {
-        if (Build.VERSION.SDK_INT >= 29) {
-            /*val UUIDStr = readSD()
-            if (UUIDStr == null || UUIDStr.isEmpty()) { //如果为空或者空字符串就生成UUID创建文件并写入UUID
-                val uuid: String = Date().getTime().toString()
-                writeSD(uuid)
-                IMEI = uuid
-            } else {
-                IMEI = UUIDStr
-            }
-            return IMEI*/
-
-            IMEI = Settings.Secure.getString(BaseApplication.appContext.getContentResolver(), Settings.Secure.ANDROID_ID)
-            return IMEI
-        }
-
-        IMEI = SystemTool.getPhoneImei(context)
-        if (TextUtils.isEmpty(IMEI)) {
+        deviceImei = SystemTool.getPhoneImei(context)
+        if (TextUtils.isEmpty(deviceImei)) {
             val tm = (context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager)
             try {
                 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
-                    IMEI = tm.imei
+                    deviceImei = tm.imei
                 } else {
-                    IMEI = tm.deviceId
+                    deviceImei = tm.deviceId
                 }
             } catch (e: Exception) {
+                e.printStackTrace()
             }
 
-            if (TextUtils.isEmpty(IMEI)) {
-                IMEI = SystemTool.getLocalMacAddress()
-//                IMEI = "35" + //we make this look like a valid IMEI
-//                        Build.BOARD.length % 10 + Build.BRAND.length % 10 + Build.CPU_ABI.length % 10 + Build.DEVICE.length % 10 + Build.DISPLAY.length % 10 + Build.HOST.length % 10 + Build.ID.length % 10 + Build.MANUFACTURER.length % 10 + Build.MODEL.length % 10 + Build.PRODUCT.length % 10 + Build.TAGS.length % 10 + Build.TYPE.length % 10 + Build.USER.length % 10 //13 digits
+            if (TextUtils.isEmpty(deviceImei)) {
+                //尝试获取序列号
+                deviceImei = getSerialNumber()
             }
         }
-        return IMEI
+
+        //如果还是获取不到id则使用AndroidId
+        if (TextUtils.isEmpty(deviceImei)) {
+            deviceImei = Settings.Secure.getString(BaseApplication.appContext.getContentResolver(), Settings.Secure.ANDROID_ID)
+        }
+
+        return deviceImei
+    }
+
+    fun getSerialNumber(): String {
+        var serial = ""
+        try {
+            val c = Class.forName("android.os.SystemProperties")
+            val get = c.getMethod("get", String::class.java)
+            serial = get.invoke(c, "ro.serialno") as String
+        } catch (e: java.lang.Exception) {
+            e.printStackTrace()
+        }
+        return serial
     }
 
     fun writeSD(content: String): String? {