summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartijn Coenen <maco@google.com>2014-08-05 07:51:58 -0700
committerMartijn Coenen <maco@google.com>2014-09-08 23:49:07 -0700
commit826a73b83b7f05ff92e51a2880fb4a75de08a9d1 (patch)
treef7c029ce00195ab2e68dd5c0b3af2b426b3bfe2a
parent3e0c8d3d3c3c82a4fc1190f91a21409c6f9244ec (diff)
downloadframeworks_base-826a73b83b7f05ff92e51a2880fb4a75de08a9d1.zip
frameworks_base-826a73b83b7f05ff92e51a2880fb4a75de08a9d1.tar.gz
frameworks_base-826a73b83b7f05ff92e51a2880fb4a75de08a9d1.tar.bz2
AID prefix registration.
Bug: 16517161 Change-Id: I4e008b84fd1372b17a98437ec8a6b71c33d7cd05
-rw-r--r--core/java/android/nfc/INfcCardEmulation.aidl1
-rw-r--r--core/java/android/nfc/cardemulation/AidGroup.java2
-rw-r--r--core/java/android/nfc/cardemulation/ApduServiceInfo.java14
-rw-r--r--core/java/android/nfc/cardemulation/CardEmulation.java17
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;
+ }
+ }
}
/**