Add NFC related prompts (on/off/default/not supported), release version 1.0.17

This commit is contained in:
2026-06-04 02:03:15 +05:00
parent e978f11343
commit e3c6b3a695
5 changed files with 86 additions and 17 deletions
@@ -0,0 +1,53 @@
package sh.sar.basedbank.util
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.nfc.NfcAdapter
import android.nfc.cardemulation.CardEmulation
import android.provider.Settings
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import sh.sar.basedbank.R
import sh.sar.basedbank.nfc.BmlHostCardEmulatorService
object NfcPaymentUtil {
fun checkAndProceed(context: Context, onReady: () -> Unit) {
val nfcAdapter = NfcAdapter.getDefaultAdapter(context) ?: run {
MaterialAlertDialogBuilder(context)
.setTitle(R.string.nfc_unsupported_title)
.setMessage(R.string.nfc_unsupported_message)
.setPositiveButton(android.R.string.ok, null)
.show()
return
}
if (!nfcAdapter.isEnabled) {
MaterialAlertDialogBuilder(context)
.setTitle(R.string.nfc_disabled_title)
.setMessage(R.string.nfc_disabled_message)
.setPositiveButton(R.string.nfc_open_settings) { _, _ ->
context.startActivity(Intent(Settings.ACTION_NFC_SETTINGS))
}
.setNegativeButton(R.string.cancel, null)
.show()
return
}
val cardEmulation = CardEmulation.getInstance(nfcAdapter)
val componentName = ComponentName(context, BmlHostCardEmulatorService::class.java)
if (!cardEmulation.isDefaultServiceForCategory(componentName, CardEmulation.CATEGORY_PAYMENT)) {
MaterialAlertDialogBuilder(context)
.setTitle(R.string.nfc_not_default_title)
.setMessage(context.getString(R.string.nfc_not_default_message,
context.applicationInfo.loadLabel(context.packageManager)))
.setPositiveButton(R.string.nfc_payment_open_settings) { _, _ ->
context.startActivity(Intent(Settings.ACTION_NFC_PAYMENT_SETTINGS))
}
.setNegativeButton(R.string.cancel, null)
.show()
return
}
onReady()
}
}