如何识别我的设备中可用于NFC支付的应用程序列表,以及是否设置了默认应用程序?

问题描述 投票:0回答:1

以编程方式识别可用的 NFC 支付应用程序列表, 有HCE服务

尝试查询所有包裹,但找不到任何详细信息。

但是我可以使用以下命令将我的应用程序设置为默认值

 fun setAsDefault(context: Context) {
        try {
            val intent = Intent()
            intent.setAction(CardEmulation.ACTION_CHANGE_DEFAULT);
            intent.putExtra(
                CardEmulation.EXTRA_SERVICE_COMPONENT,
                ComponentName(
                    context,
                    HCEService::class.java
                )
            )
            intent.putExtra(CardEmulation.EXTRA_CATEGORY, CardEmulation.CATEGORY_PAYMENT)
            context.startActivity(intent)
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }
android nfc
1个回答
0
投票

您可以使用 PackageManager 查询处理 HCE 付款的服务

 fun getAvailableNFCPaymentApps(context: Context): List<ApplicationInfo> {
       val pm = context.packageManager
       val intent = Intent(CardEmulation.ACTION_CHANGE_DEFAULT)
       intent.putExtra(CardEmulation.EXTRA_CATEGORY, 
       CardEmulation.CATEGORY_PAYMENT)

      val resolveInfos = pm.queryIntentServices(intent, 
      PackageManager.GET_META_DATA)
      return resolveInfos.mapNotNull { it.serviceInfo?.applicationInfo }
   }

您可以在此处阅读更多内容Android NFC

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.