If there are multiple services(apps) capable of NFC HCE payments are installed. Those application services are visible under settings NFC Tap and Pay.
There are two AID group defined, one for payment and second for other cateogy.
How to programmatically change your application to be the default 'other category'service if it's not?
Below is the code that I'm executing, but dialog is not invoked to select running application for 'other category'. However for 'payment category' dialog is opened successfully. Below is the code:
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;
}