diff options
author | Martijn Coenen <maco@google.com> | 2014-08-05 07:51:58 -0700 |
---|---|---|
committer | Martijn Coenen <maco@google.com> | 2014-09-08 23:49:07 -0700 |
commit | 826a73b83b7f05ff92e51a2880fb4a75de08a9d1 (patch) | |
tree | f7c029ce00195ab2e68dd5c0b3af2b426b3bfe2a /core/java/android/nfc | |
parent | 3e0c8d3d3c3c82a4fc1190f91a21409c6f9244ec (diff) | |
download | frameworks_base-826a73b83b7f05ff92e51a2880fb4a75de08a9d1.zip frameworks_base-826a73b83b7f05ff92e51a2880fb4a75de08a9d1.tar.gz frameworks_base-826a73b83b7f05ff92e51a2880fb4a75de08a9d1.tar.bz2 |
AID prefix registration.
Bug: 16517161
Change-Id: I4e008b84fd1372b17a98437ec8a6b71c33d7cd05
Diffstat (limited to 'core/java/android/nfc')
4 files changed, 31 insertions, 3 deletions
diff --git a/core/java/android/nfc/INfcCardEmulation.aidl b/core/java/android/nfc/INfcCardEmulation.aidl index 521f4fd..d1b132c 100644 --- a/core/java/android/nfc/INfcCardEmulation.aidl +++ b/core/java/android/nfc/INfcCardEmulation.aidl @@ -36,4 +36,5 @@ interface INfcCardEmulation List<ApduServiceInfo> getServices(int userHandle, in String category); boolean setPreferredService(in ComponentName service); boolean unsetPreferredService(); + boolean supportsAidPrefixRegistration(); } diff --git a/core/java/android/nfc/cardemulation/AidGroup.java b/core/java/android/nfc/cardemulation/AidGroup.java index 6af7b7e..f440874 100644 --- a/core/java/android/nfc/cardemulation/AidGroup.java +++ b/core/java/android/nfc/cardemulation/AidGroup.java @@ -78,7 +78,7 @@ public final class AidGroup implements Parcelable { } /** - * @return the list of AIDs in this group + * @return the list of AIDs in this group */ public List<String> getAids() { return aids; diff --git a/core/java/android/nfc/cardemulation/ApduServiceInfo.java b/core/java/android/nfc/cardemulation/ApduServiceInfo.java index 0df87c1..646134e 100644 --- a/core/java/android/nfc/cardemulation/ApduServiceInfo.java +++ b/core/java/android/nfc/cardemulation/ApduServiceInfo.java @@ -224,6 +224,20 @@ public final class ApduServiceInfo implements Parcelable { Log.e(TAG, "Ignoring invalid or duplicate aid: " + aid); } a.recycle(); + } else if (eventType == XmlPullParser.START_TAG && + "aid-prefix-filter".equals(tagName) && currentGroup != null) { + final TypedArray a = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AidFilter); + String aid = a.getString(com.android.internal.R.styleable.AidFilter_name). + toUpperCase(); + // Add wildcard char to indicate prefix + aid.concat("*"); + if (CardEmulation.isValidAid(aid) && !currentGroup.aids.contains(aid)) { + currentGroup.aids.add(aid); + } else { + Log.e(TAG, "Ignoring invalid or duplicate aid: " + aid); + } + a.recycle(); } } } catch (NameNotFoundException e) { diff --git a/core/java/android/nfc/cardemulation/CardEmulation.java b/core/java/android/nfc/cardemulation/CardEmulation.java index 0e0c255..64c2bc2 100644 --- a/core/java/android/nfc/cardemulation/CardEmulation.java +++ b/core/java/android/nfc/cardemulation/CardEmulation.java @@ -515,8 +515,21 @@ public final class CardEmulation { * @return whether AID prefix registering is supported on this device. */ public boolean supportsAidPrefixRegistration() { - // TODO - return false; + try { + return sService.supportsAidPrefixRegistration(); + } catch (RemoteException e) { + recoverService(); + if (sService == null) { + Log.e(TAG, "Failed to recover CardEmulationService."); + return false; + } + try { + return sService.supportsAidPrefixRegistration(); + } catch (RemoteException ee) { + Log.e(TAG, "Failed to reach CardEmulationService."); + return false; + } + } } /** |