2

如果安装了多个支持 NFC HCE 支付的服务(应用程序)。这些应用程序服务在设置 NFC Tap and Pay 下可见。

定义了两个 AID 组,一个用于支付,另一个用于其他类别。

如果不是,如何以编程方式将您的应用程序更改为默认的“其他类别”服务?

下面是我正在执行的代码,但没有调用对话框来为“其他类别”选择正在运行的应用程序。但是,“付款类别”对话框已成功打开。下面是代码:

CardEmulation cardEmulation = CardEmulation.getInstance(NfcAdapter.getDefaultAdapter(this));
    boolean isDefaultCategorySelected = cardEmulation.isDefaultServiceForAid(new ComponentName(this, MyOffHostApduService.class), "F4100000040001");

    if(!isDefaultCategorySelected(CardEmulation.CATEGORY_OTHER)){

            Intent intent = new Intent(CardEmulation.ACTION_CHANGE_DEFAULT);
        intent.putExtra(CardEmulation.EXTRA_CATEGORY, CardEmulation.CATEGORY_OTHER);
        intent.putExtra(CardEmulation.EXTRA_SERVICE_COMPONENT, new ComponentName(this, MyOffHostApduService.class));
        startActivityForResult(intent, REQUEST_CODE_SET_DEFAULT_TRANSIT_SERVICE);
        return;
    }
4

1 回答 1

2

你不能。

当前仅 CATEGORY_PAYMENT 支持全局默认值。CATEGORY_OTHER 的解析策略始终设置为 SELECTION_MODE_ASK_IF_CONFLICT。因此,您的应用程序必须是在 CATEGORY_OTHER 中注册某个 AID 组的唯一应用程序,否则 Android 将在交易时询问用户应使用哪个应用程序。

当您的一项活动在前台时,您可以使用CardEmulation.setPreferredService()它来将您的 HCE 服务设置为默认值。

于 2015-10-04T07:14:46.677 回答