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() } }