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