From 59237ecbcb9828b1dc762da07f83fa598bd9d6b2 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期二, 03 六月 2025 18:07:01 +0800
Subject: [PATCH] fix(NewCard2Activity): 优化读卡逻辑
---
generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt | 109 +++++++++++++++++++++++++++++++-----------------------
1 files changed, 63 insertions(+), 46 deletions(-)
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt b/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
index 46c5a42..57e331a 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
@@ -34,7 +34,7 @@
// 鏀粯鏂瑰紡
private var paymentMethod: String = "鐜伴噾"
-
+
// 鏀粯鏂瑰紡ID
private var paymentId: Long = 0
@@ -46,9 +46,12 @@
// 鐢ㄦ埛ID
private var userId: String = ""
-
+
// 瀹㈡埛ID
private var clientId: String = ""
+
+ // 鏄惁宸茶鍗�
+ private var isReadCard: Boolean = false
companion object {
private const val TAG = "NewCard2Activity"
@@ -70,7 +73,7 @@
val pageSize: Any?,
val pageTotal: Any?
)
-
+
// 鐢ㄦ埛淇℃伅鏁版嵁绫�
data class ClientInfo(
val clientId: String,
@@ -92,14 +95,14 @@
// 鑾峰彇浼犻�掔殑clientId鍙傛暟
clientId = intent.getStringExtra("clientId") ?: ""
-
+
initView()
-
+
// 濡傛灉鏈塩lientId锛岃幏鍙栧鎴蜂俊鎭�
if (clientId.isNotEmpty()) {
getClientInfo(clientId)
}
-
+
// 鑾峰彇鏀粯鏂瑰紡
getPaymentMethods()
initListener()
@@ -118,7 +121,7 @@
binding.newCardRechargeAmount.addTextChangedListener(createDecimalTextWatcher())
binding.newCardCardFee.addTextChangedListener(createDecimalTextWatcher())
}
-
+
/**
* 鑾峰彇瀹㈡埛璇︾粏淇℃伅
*/
@@ -162,14 +165,14 @@
}
)
}
-
+
/**
* 鏄剧ず瀹㈡埛淇℃伅鍒扮晫闈�
*/
private fun displayClientInfo(clientInfo: ClientInfo) {
// 淇濆瓨鐢ㄦ埛ID渚涘悗缁娇鐢�
userId = clientInfo.clientId
-
+
// 鏄剧ず鐢ㄦ埛鍩烘湰淇℃伅
binding.newCardUserName.text = clientInfo.name
binding.newCardIdCard.text = if (clientInfo.idCard.isBlank()) "鏃�" else clientInfo.idCard
@@ -232,23 +235,23 @@
resources.getDimensionPixelSize(R.dimen.dimen_40),
1.0f
)
-
+
// 濡傛灉涓嶆槸鏈�鍚庝竴涓寜閽紝娣诲姞鍙宠竟璺�
if (index < paymentMethodList.size - 1) {
- (radioButton.layoutParams as android.widget.LinearLayout.LayoutParams).rightMargin =
+ (radioButton.layoutParams as android.widget.LinearLayout.LayoutParams).rightMargin =
resources.getDimensionPixelSize(R.dimen.dimen_15)
}
-
+
radioButton.text = method.name
radioButton.background = resources.getDrawable(R.drawable.radio_selector)
radioButton.buttonDrawable = null
radioButton.gravity = android.view.Gravity.CENTER
radioButton.setTextColor(resources.getColorStateList(R.color.radio_button_text_color))
radioButton.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14f)
-
+
// 娣诲姞鍒癛adioGroup
binding.newCardPaymentMethod.addView(radioButton)
-
+
// 榛樿閫変腑绗竴涓�
if (index == 0) {
radioButton.isChecked = true
@@ -420,48 +423,62 @@
}
override fun onNfcBack(intent: Intent) {
- val cardNumber = NfcReadHelper.getInstance(intent, this).getCardNumberNoClose()
- if (cardNumber.isNotEmpty()) {
- try {
- // 鍒涘缓瀵嗛挜鍒楄〃鐨勫壇鏈紝閬垮厤ConcurrentModificationException
- val keyList = ArrayList(NfcReadHelper.getInstance(intent, this).getKeyList())
+ if (!isReadCard) {
+ val cardNumber = NfcReadHelper.getInstance(intent, this).getCardNumberNoClose()
+ if (cardNumber.isNotEmpty()) {
+ try {
+ // 鍒涘缓瀵嗛挜鍒楄〃鐨勫壇鏈紝閬垮厤ConcurrentModificationException
+ val keyList = ArrayList(NfcReadHelper.getInstance(intent, this).getKeyList())
- // 浣跨敤缇庡寲鐨勫姞杞藉姩鐢绘潵鏄剧ずNFC鎿嶄綔鐨勫姞杞界姸鎬�
- val nfcHelper = NfcWreatHelper.getInstance(intent, this)
- nfcHelper.setLoadingView(binding.loadingContainer, binding.nfcProgressWheel)
-
- // 寮傛淇敼瀵嗙爜
- nfcHelper.changePSAsync(keyList, false, true) { success: Boolean, msg: String? ->
- if (success) {
- // 淇濆瓨鍗$墿鐞咺D
- cardPhysicalId = cardNumber
- // 鏇存柊UI
- binding.newCardArerNumber.text = cardNumber
- // 闅愯棌NFC璇诲崱鐣岄潰
- binding.nfcContainer.visibility = View.GONE
- binding.centerScroll.visibility = View.VISIBLE
- binding.newCardRegistBtn.visibility = View.VISIBLE
- } else {
- // 瀵嗙爜淇敼澶辫触锛屽鐞嗛敊璇儏鍐�
- Toast.makeText(
- this@NewCard2Activity,
- "鍗$墖鍒濆鍖栧け璐ワ細$msg",
- Toast.LENGTH_LONG
- ).show()
+ // 浣跨敤缇庡寲鐨勫姞杞藉姩鐢绘潵鏄剧ずNFC鎿嶄綔鐨勫姞杞界姸鎬�
+ val nfcHelper = NfcWreatHelper.getInstance(intent, this)
+ nfcHelper.setLoadingView(binding.loadingContainer, binding.nfcProgressWheel)
+
+ // 寮傛淇敼瀵嗙爜
+ nfcHelper.changePSAsync(
+ keyList,
+ false,
+ true
+ ) { success: Boolean, msg: String? ->
+ if (success) {
+ isReadCard = true
+ // 淇濆瓨鍗$墿鐞咺D
+ cardPhysicalId = cardNumber
+ // 鏇存柊UI
+ binding.newCardArerNumber.text = cardNumber
+ // 闅愯棌NFC璇诲崱鐣岄潰
+ binding.nfcContainer.visibility = View.GONE
+ binding.centerScroll.visibility = View.VISIBLE
+ binding.newCardRegistBtn.visibility = View.VISIBLE
+ } else {
+ // 瀵嗙爜淇敼澶辫触锛屽鐞嗛敊璇儏鍐�
+ Toast.makeText(
+ this@NewCard2Activity,
+ "鍗$墖鍒濆鍖栧け璐ワ細$msg",
+ Toast.LENGTH_LONG
+ ).show()
+ }
}
+ } catch (e: Exception) {
+ // 澶勭悊寮傚父鎯呭喌
+ CrashReport.postCatchedException(e)
+ e.printStackTrace()
}
- } catch (e: Exception) {
- // 澶勭悊寮傚父鎯呭喌
- CrashReport.postCatchedException(e)
- e.printStackTrace()
+ } else {
+ Toast.makeText(
+ this@NewCard2Activity,
+ "鑾峰彇鍗″彿澶辫触",
+ Toast.LENGTH_SHORT
+ ).show()
}
} else {
Toast.makeText(
this@NewCard2Activity,
- "鑾峰彇鍗″彿澶辫触",
+ "褰撳墠宸茶鍗★紝涓嶅彲鍐嶆璇诲崱",
Toast.LENGTH_SHORT
).show()
}
+
}
override fun onDestroy() {
--
Gitblit v1.8.0