Установить сервис по умолчанию для категории «Другое» | ВКЭ

Если установлено несколько сервисов (приложений), поддерживающих платежи 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;
    }

person user1393372    schedule 16.05.2015    source источник


Ответы (1)


Вы не можете.

Глобальные значения по умолчанию в настоящее время поддерживаются только для CATEGORY_PAYMENT. Стратегия разрешения для CATEGORY_OTHER всегда устанавливается на SELECTION_MODE_ASK_IF_CONFLICT. Следовательно, ваше приложение должно быть либо единственным приложением, которое регистрирует определенную группу AID в CATEGORY_OTHER, либо Android спросит пользователя при транзакции, какое приложение следует использовать.

Однако вы можете использовать CardEmulation.setPreferredService(), чтобы установить службу HCE в качестве службы по умолчанию, когда одно из ваших действий находится на переднем плане.

person Michael Roland    schedule 04.10.2015