forked from thijooree/android
54 lines
2.1 KiB
Kotlin
54 lines
2.1 KiB
Kotlin
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()
|
|
}
|
|
}
|