为"其他"类别设置默认服务 |慧与健康



如果安装了多个NFC HCE支付服务(应用)。这些应用服务在NFC点击和支付设置中可见。

定义了两个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;
    }

你不能。

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

你可以使用CardEmulation.setPreferredService()来设置你的HCE服务作为默认值,而你的一个活动是在前台

相关内容

最新更新