为“其他”类别设置默认服务HCE

时间:2015-05-16 07:01:41

标签: android nfc hce android-tap-and-pay

如果有多个服务(应用程序)能够安装NFC HCE付款。这些应用程序服务在NFC Tap and Pay设置下可见。

定义了两个AID组,一个用于付款,另一个用于其他cateogy。

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

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

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;
    }

1 个答案:

答案 0 :(得分:1)

你不能。

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

您可以使用CardEmulation.setPreferredService(),以便在您的某个活动位于前台时将HCE服务设置为默认值。