以编程方式识别可用的 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()
}
}
您可以使用 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