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 |  161 +++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 112 insertions(+), 49 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 f006e6a..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,17 +1,24 @@
 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;
 import android.view.View;
+import android.widget.Toast;
 
 import com.dayu.recharge.MyApplication;
 import com.dayu.recharge.R;
 import com.dayu.recharge.databinding.ActivityHomeBinding;
 import com.dayu.recharge.dbBean.AdminDataBean;
 import com.dayu.recharge.utils.TipUtil;
-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;
 
 
 /**
@@ -32,25 +39,9 @@
         homeBinding = ActivityHomeBinding.inflate(LayoutInflater.from(this));
         setContentView(homeBinding.getRoot());
         initView();
-        getPermission();
         rushState();
     }
 
-    private void getPermission() {
-        PermissionX.init(HomeActivity.this).permissions(Manifest.permission.READ_PHONE_STATE)
-                .onExplainRequestReason((scope, deniedList) -> {
-
-// val message = "PermissionX闇�瑕佹偍鍚屾剰浠ヤ笅鏉冮檺鎵嶈兘姝e父浣跨敤"
-                })
-                .request((allGranted, grantedList, deniedList) -> {
-                    if (allGranted) {//鎵�鏈夌敵璇风殑鏉冮檺閮藉凡閫氳繃
-
-                    } else {//鎮ㄦ嫆缁濅簡濡備笅鏉冮檺锛�$deniedList
-
-
-                    }
-                });
-    }
 
     public void rushState() {
         if (MyApplication.myApplication.isConncet) {
@@ -64,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
@@ -116,4 +106,77 @@
             }
         });
     }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        homeActivity = null;
+    }
+
+
+    long mExitTime;
+
+    //鐐瑰嚮涓ゆ閫�鍑虹▼搴� 鏈夋椂闂撮棿闅� 闂撮殧鍐呯偣鍑诲垯閫�鍑虹▼搴� 鍚﹀垯 鍒欐彁绀�
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        if (keyCode == KeyEvent.KEYCODE_BACK) {
+            if ((System.currentTimeMillis() - mExitTime) > 2000) {
+                Toast.makeText(HomeActivity.this, "鍐嶆寜涓�娆¢��鍑虹▼搴�", Toast.LENGTH_SHORT).show();
+                mExitTime = System.currentTimeMillis();
+            } else {
+                HomeActivity.this.finish();
+            }
+            return true;
+        }
+        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