diff options
| -rw-r--r-- | core/java/android/nfc/INfcCardEmulation.aidl | 1 | ||||
| -rw-r--r-- | core/java/android/nfc/cardemulation/CardEmulation.java | 20 |
2 files changed, 18 insertions, 3 deletions
diff --git a/core/java/android/nfc/INfcCardEmulation.aidl b/core/java/android/nfc/INfcCardEmulation.aidl index 848b6d52c47f..53843fe73d33 100644 --- a/core/java/android/nfc/INfcCardEmulation.aidl +++ b/core/java/android/nfc/INfcCardEmulation.aidl @@ -40,4 +40,5 @@ interface INfcCardEmulation boolean unsetPreferredService(); boolean supportsAidPrefixRegistration(); ApduServiceInfo getPreferredPaymentService(int userHandle); + boolean isDefaultPaymentRegistered(); } diff --git a/core/java/android/nfc/cardemulation/CardEmulation.java b/core/java/android/nfc/cardemulation/CardEmulation.java index b138a3f01f49..d498535ce52c 100644 --- a/core/java/android/nfc/cardemulation/CardEmulation.java +++ b/core/java/android/nfc/cardemulation/CardEmulation.java @@ -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; |