From 732e4481b8437719468cddfb4971ee54a4b36625 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期二, 02 四月 2024 09:48:38 +0800
Subject: [PATCH] 修复设备序列号没有设置地址时一直变化的bug

---
 app/src/main/java/com/dayu/recharge/activity/HomeActivity.java |  121 ++++++++++++++++++++++++++++-----------
 1 files changed, 86 insertions(+), 35 deletions(-)

diff --git a/app/src/main/java/com/dayu/recharge/activity/HomeActivity.java b/app/src/main/java/com/dayu/recharge/activity/HomeActivity.java
index 4d52f56..41cfc66 100644
--- a/app/src/main/java/com/dayu/recharge/activity/HomeActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/HomeActivity.java
@@ -1,7 +1,8 @@
 package com.dayu.recharge.activity;
 
-import android.Manifest;
+import android.annotation.SuppressLint;
 import android.content.Intent;
+import android.os.Build;
 import android.os.Bundle;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
@@ -13,8 +14,11 @@
 import com.dayu.recharge.databinding.ActivityHomeBinding;
 import com.dayu.recharge.dbBean.AdminDataBean;
 import com.dayu.recharge.utils.TipUtil;
-import com.dayu.recharge.utils.ToastUtil;
-import com.permissionx.guolindev.PermissionX;
+import com.dayu.recharge.view.PassWordDialog;
+
+import java.lang.reflect.Method;
+import java.util.Random;
+import java.util.zip.CRC32;
 
 
 /**
@@ -39,7 +43,6 @@
     }
 
 
-
     public void rushState() {
         if (MyApplication.myApplication.isConncet) {
             homeBinding.socketState.setTextColor(getResources().getColor(R.color.title_bg));
@@ -52,49 +55,48 @@
     }
 
     private void initView() {
-        homeBinding.homeNewCard.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                AdminDataBean adminData = baseDao.adminDao().findFirst();
-                if (adminData != null) {
-                    startActivity(new Intent(HomeActivity.this, NewCardActivity.class));
-                } else {
-                    TipUtil.show("璇峰厛璁剧疆鍦板潃淇℃伅");
-                }
+        AdminDataBean adminData = baseDao.adminDao().findFirst();
+        if (adminData == null) {
+            // 鍒涘缓涓�涓殢鏈烘暟鐢熸垚鍣ㄥ璞�
+            Random random = new Random();
+            // 鐢熸垚 1 鍒� 12 涔嬮棿鐨勯殢鏈烘暟瀛�
+            int randomNumber = random.nextInt(12) + 1;
+            AdminDataBean adminDataBean = new AdminDataBean();
+            adminDataBean.setSerial(randomNumber + generateUniqueNumber(getSN()));
+            baseDao.adminDao().insert(adminDataBean);
+        }
 
-            }
-        });
-        homeBinding.homeRecharge.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                AdminDataBean adminData = baseDao.adminDao().findFirst();
-                if (adminData != null) {
-                    startActivity(new Intent(HomeActivity.this, RechargeActivity.class));
-                } else {
-                    TipUtil.show("璇峰厛璁剧疆鍦板潃淇℃伅");
-                }
 
+        homeBinding.homeNewCard.setOnClickListener(v -> {
+            AdminDataBean adminData1 = baseDao.adminDao().findFirst();
+            if (adminData1.isHasAddressCode()) {
+                startActivity(new Intent(HomeActivity.this, NewCardActivity.class));
+            } else {
+                TipUtil.show("璇峰厛璁剧疆鍦板潃淇℃伅");
             }
+
         });
-        homeBinding.homeRedCard.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                startActivity(new Intent(HomeActivity.this, ReadCardAcitivy.class));
+        homeBinding.homeRecharge.setOnClickListener(v -> {
+            AdminDataBean adminData12 = baseDao.adminDao().findFirst();
+            if (adminData12.isHasAddressCode()) {
+                startActivity(new Intent(HomeActivity.this, RechargeActivity.class));
+            } else {
+                TipUtil.show("璇峰厛璁剧疆鍦板潃淇℃伅");
             }
+
         });
+        homeBinding.homeRedCard.setOnClickListener(v -> startActivity(new Intent(HomeActivity.this, ReadCardAcitivy.class)));
         homeBinding.homeAdmin.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                startActivity(new Intent(HomeActivity.this, SysActivity.class));
+                PassWordDialog passWordDialog = new PassWordDialog(HomeActivity.this, new Intent(HomeActivity.this, SysActivity.class));
+                passWordDialog.show();
             }
         });
         //鍙傛暟璁剧疆
-        homeBinding.homeParameter.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                startActivity(new Intent(HomeActivity.this, ParameterActivity.class));
-
-            }
+        homeBinding.homeParameter.setOnClickListener(v -> {
+            PassWordDialog passWordDialog = new PassWordDialog(HomeActivity.this, new Intent(HomeActivity.this, ParameterActivity.class));
+            passWordDialog.show();
         });
         homeBinding.homeMy.setOnClickListener(new View.OnClickListener() {
             @Override
@@ -128,4 +130,53 @@
         }
         return super.onKeyDown(keyCode, event);
     }
+
+    public String generateUniqueNumber(String input) {
+        try {
+            // 浣跨敤CRC32鍝堝笇鍑芥暟
+            CRC32 crc32 = new CRC32();
+            crc32.update(input.getBytes());
+            long crcValue = crc32.getValue();
+            // 灏嗗搱甯屽�兼槧灏勫埌6浣嶆暟瀛楃殑鑼冨洿
+            long sixDigitNumber = Math.abs(crcValue) % 1000000;
+            // 鏍煎紡鍖栦负6浣嶆暟瀛楃殑瀛楃涓�
+            return String.format("%06d", sixDigitNumber);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    @SuppressLint("MissingPermission")
+    public static String getSN() {
+        String serial = null;
+        try {
+            Class<?> c = Class.forName("android.os.SystemProperties");
+            Method get = c.getMethod("get", String.class);
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+                try {
+                    serial = (String) get.invoke(c, "ro.sunmi.serial");
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+                return serial;
+            } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+                serial = Build.getSerial();
+                return serial;
+            } else {
+                //瀹夊崜8浠ヤ笅浣跨敤Build.SERIAL鐩稿悓鏂瑰紡
+                //return Build.SERIAL;
+                try {
+                    serial = (String) get.invoke(c, "ro.serialno");
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+                return serial;
+            }
+        } catch (ClassNotFoundException e) {
+            throw new RuntimeException(e);
+        } catch (NoSuchMethodException e) {
+            throw new RuntimeException(e);
+        }
+    }
 }

--
Gitblit v1.8.0