Let's think about a case where user has installed multiple applications capable of NFC HCE payments. Those application services are visible under settings NFC Tap and Pay.
How to programmatically change your application to be the default payment service if it's not?
CardEmulation
seems only to have API to query if service for category is default.
Thanks.
Open Settings > tap Connections > tap NFC and payment again. Turn on the NFC feature on your phone, and then tap Tap and pay. Choose Google Pay as your default payment method.
A default payment method is the payment method that will be used for all created payments going forward.
Open the phone's Settings and select the Apps menu. Tap the three-dot icon and select Default Apps or select the setting for Choose default apps. Choose the Tap and pay option and set it to Google Pay (or G Pay) if it isn't already the default. Google Pay will then pop up as the payment system when needed.
Log in to your PayPal account (make sure you're using two-factor authorization for extra security while you're at it). Then, click the Wallet tab. You'll see a list of the payment methods you've linked on the left. Click the one you want to default to, and then click Set as preferred.
The main idea behind having that UI is that the user can decide on which payment app should be the default app. Consequently, there is no way to programmatically set your app to be the default.
However, you can request the user to set your app as default app for the payment category (see ACTION_CHANGE_DEFAULT
):
Intent intent = new Intent();
intent.setAction(CardEmulation.ACTION_CHANGE_DEFAULT);
intent.putExtra(CardEmulation.EXTRA_SERVICE_COMPONENT,
new ComponentName(this, my.package.MyPaymentService.class));
intent.putExtra(CardEmulation.EXTRA_CATEGORY, CardEmulation.CATEGORY_PAYMENT);
startActivity(intent);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With