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