Merge "Fix getSelectionModeForCategory"

This commit is contained in:
George Chang
2021-05-27 16:49:42 +00:00
committed by Gerrit Code Review
2 changed files with 18 additions and 3 deletions

View File

@@ -40,4 +40,5 @@ interface INfcCardEmulation
boolean unsetPreferredService();
boolean supportsAidPrefixRegistration();
ApduServiceInfo getPreferredPaymentService(int userHandle);
boolean isDefaultPaymentRegistered();
}

View File

@@ -294,9 +294,23 @@ public final class CardEmulation {
*/
public int getSelectionModeForCategory(String category) {
if (CATEGORY_PAYMENT.equals(category)) {
String defaultComponent = Settings.Secure.getString(mContext.getContentResolver(),
Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT);
if (defaultComponent != null) {
boolean paymentRegistered = false;
try {
paymentRegistered = sService.isDefaultPaymentRegistered();
} catch (RemoteException e) {
recoverService();
if (sService == null) {
Log.e(TAG, "Failed to recover CardEmulationService.");
return SELECTION_MODE_ALWAYS_ASK;
}
try {
paymentRegistered = sService.isDefaultPaymentRegistered();
} catch (RemoteException ee) {
Log.e(TAG, "Failed to reach CardEmulationService.");
return SELECTION_MODE_ALWAYS_ASK;
}
}
if (paymentRegistered) {
return SELECTION_MODE_PREFER_DEFAULT;
} else {
return SELECTION_MODE_ALWAYS_ASK;