| | |
| | | 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; |
| | | |
| | | |
| | | /** |
| | |
| | | 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需要您同意以下权限才能正常使用" |
| | | }) |
| | | .request((allGranted, grantedList, deniedList) -> { |
| | | if (allGranted) {//所有申请的权限都已通过 |
| | | |
| | | } else {//您拒绝了如下权限:$deniedList |
| | | |
| | | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | public void rushState() { |
| | | if (MyApplication.myApplication.isConncet) { |
| | |
| | | } |
| | | |
| | | 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 |
| | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | } |
| | | } |