Add intent to notify applications when the secure element state changed
Bug: 175850569
Test: check broadcast intent is triggered when the secure element state
changed
Change-Id: Iaf9f6bd5e964e1e3ef559afa7adbefd2cbd8d596
diff --git a/core/api/current.txt b/core/api/current.txt
index d1906c6..60fe488 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -35868,6 +35868,9 @@
method @NonNull public String getVersion();
method public boolean isConnected();
method public void shutdown();
+ field public static final String ACTION_SECURE_ELEMENT_STATE_CHANGED = "android.se.omapi.action.SECURE_ELEMENT_STATE_CHANGED";
+ field public static final String EXTRA_READER_NAME = "android.se.omapi.extra.READER_NAME";
+ field public static final String EXTRA_READER_STATE = "android.se.omapi.extra.READER_STATE";
}
public static interface SEService.OnConnectedListener {
diff --git a/core/java/android/se/omapi/SEService.java b/core/java/android/se/omapi/SEService.java
index a5c5c61..333af91 100644
--- a/core/java/android/se/omapi/SEService.java
+++ b/core/java/android/se/omapi/SEService.java
@@ -22,7 +22,10 @@
package android.se.omapi;
+import android.annotation.BroadcastBehavior;
import android.annotation.NonNull;
+import android.annotation.SdkConstant;
+import android.annotation.SdkConstant.SdkConstantType;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -71,6 +74,28 @@
}
/**
+ * Broadcast Action: Intent to notify if the secure element state is changed.
+ */
+ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
+ @BroadcastBehavior(registeredOnly = true, protectedBroadcast = true)
+ public static final String ACTION_SECURE_ELEMENT_STATE_CHANGED =
+ "android.se.omapi.action.SECURE_ELEMENT_STATE_CHANGED";
+
+ /**
+ * Mandatory extra containing the reader name of the state changed secure element.
+ *
+ * @see Reader#getName()
+ */
+ public static final String EXTRA_READER_NAME = "android.se.omapi.extra.READER_NAME";
+
+ /**
+ * Mandatory extra containing the connected state of the state changed secure element.
+ *
+ * True if the secure element is connected correctly, false otherwise.
+ */
+ public static final String EXTRA_READER_STATE = "android.se.omapi.extra.READER_STATE";
+
+ /**
* Listener object that allows the notification of the caller if this
* SEService could be bound to the backend.
*/
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 714a09d..60b3839 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -309,6 +309,9 @@
<protected-broadcast android:name="android.net.nsd.STATE_CHANGED" />
+ <!-- For OMAPI -->
+ <protected-broadcast android:name="android.se.omapi.action.SECURE_ELEMENT_STATE_CHANGED" />
+
<protected-broadcast android:name="android.nfc.action.ADAPTER_STATE_CHANGED" />
<protected-broadcast android:name="android.nfc.action.PREFERRED_PAYMENT_CHANGED" />
<protected-broadcast android:name="android.nfc.action.TRANSACTION_DETECTED" />