浏览代码

修复IMEI获取错误

allen 4 年之前
父节点
当前提交
891a080557
共有 1 个文件被更改,包括 19 次插入6 次删除
  1. 19 6
      home/src/main/code/com/wdkl/ncs/android/component/home/util/Util.kt

+ 19 - 6
home/src/main/code/com/wdkl/ncs/android/component/home/util/Util.kt

@@ -6,9 +6,11 @@ import android.content.Context
 import android.content.Context.KEYGUARD_SERVICE
 import android.content.Context.KEYGUARD_SERVICE
 import android.os.Build
 import android.os.Build
 import android.os.PowerManager
 import android.os.PowerManager
+import android.telephony.TelephonyManager
 import android.util.Log
 import android.util.Log
 import com.enation.javashop.utils.base.tool.SystemTool
 import com.enation.javashop.utils.base.tool.SystemTool
 import com.google.common.base.Strings
 import com.google.common.base.Strings
+import java.lang.Exception
 
 
 object Util {
 object Util {
 
 
@@ -19,13 +21,24 @@ object Util {
     */
     */
     @SuppressLint("MissingPermission", "PrivateApi")
     @SuppressLint("MissingPermission", "PrivateApi")
     fun getIMEI(context: Context): String {
     fun getIMEI(context: Context): String {
-        val imei = SystemTool.getPhoneImei(context)
-        if (Strings.isNullOrEmpty(imei)) {
-            return "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
-        } else {
-            return imei
+        IMEI = SystemTool.getPhoneImei(context)
+        if (Strings.isNullOrEmpty(IMEI)) {
+            val tm = (context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager)
+            try {
+                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+                    IMEI = tm.imei
+                } else {
+                    IMEI = tm.deviceId
+                }
+            }catch (e:Exception){
+            }
+
+            if (Strings.isNullOrEmpty(IMEI)) {
+                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
+            }
         }
         }
+        return IMEI
     }
     }
 
 
     /**
     /**