Loading api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -41722,6 +41722,7 @@ package android.se.omapi { public final class SEService { ctor public SEService(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.se.omapi.SEService.OnConnectedListener); method @NonNull public android.se.omapi.Reader[] getReaders(); method @NonNull public android.se.omapi.Reader getUiccReader(int); method @NonNull public String getVersion(); method public boolean isConnected(); method public void shutdown(); core/java/android/se/omapi/SEService.java +54 −25 Original line number Diff line number Diff line Loading @@ -98,6 +98,8 @@ public final class SEService { private static final String TAG = "OMAPI.SEService"; private static final String UICC_TERMINAL = "SIM"; private final Object mLock = new Object(); /** The client context (e.g. activity). */ Loading Loading @@ -190,32 +192,33 @@ public final class SEService { * is of length 0. */ public @NonNull Reader[] getReaders() { if (mSecureElementService == null) { throw new IllegalStateException("service not connected to system"); } String[] readerNames; try { readerNames = mSecureElementService.getReaders(); } catch (RemoteException e) { throw new RuntimeException(e); } loadReaders(); Reader[] readers = new Reader[readerNames.length]; int i = 0; for (String readerName : readerNames) { if (mReaders.get(readerName) == null) { try { mReaders.put(readerName, new Reader(this, readerName, getReader(readerName))); readers[i++] = mReaders.get(readerName); } catch (Exception e) { Log.e(TAG, "Error adding Reader: " + readerName, e); return mReaders.values().toArray(new Reader[0]); } } else { readers[i++] = mReaders.get(readerName); /** * Obtain a UICC Reader instance with specific slot number from the SecureElementService * * @param slotNumber The index of the uicc slot. The index starts from 1. * @throws IllegalArgumentException if the reader object corresponding to the uiccSlotNumber * is not exist. * @return A Reader object for this uicc slot. */ public @NonNull Reader getUiccReader(int slotNumber) { if (slotNumber < 1) { throw new IllegalArgumentException("slotNumber should be larger than 0"); } loadReaders(); String readerName = UICC_TERMINAL + slotNumber; Reader reader = mReaders.get(readerName); if (reader == null) { throw new IllegalArgumentException("Reader:" + readerName + " doesn't exist"); } return readers; return reader; } /** Loading Loading @@ -270,4 +273,30 @@ public final class SEService { throw new IllegalStateException(e.getMessage()); } } /** * Load available Secure Element Readers */ private void loadReaders() { if (mSecureElementService == null) { throw new IllegalStateException("service not connected to system"); } String[] readerNames; try { readerNames = mSecureElementService.getReaders(); } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); } for (String readerName : readerNames) { if (mReaders.get(readerName) == null) { try { mReaders.put(readerName, new Reader(this, readerName, getReader(readerName))); } catch (Exception e) { Log.e(TAG, "Error adding Reader: " + readerName, e); } } } } } Loading
api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -41722,6 +41722,7 @@ package android.se.omapi { public final class SEService { ctor public SEService(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.se.omapi.SEService.OnConnectedListener); method @NonNull public android.se.omapi.Reader[] getReaders(); method @NonNull public android.se.omapi.Reader getUiccReader(int); method @NonNull public String getVersion(); method public boolean isConnected(); method public void shutdown();
core/java/android/se/omapi/SEService.java +54 −25 Original line number Diff line number Diff line Loading @@ -98,6 +98,8 @@ public final class SEService { private static final String TAG = "OMAPI.SEService"; private static final String UICC_TERMINAL = "SIM"; private final Object mLock = new Object(); /** The client context (e.g. activity). */ Loading Loading @@ -190,32 +192,33 @@ public final class SEService { * is of length 0. */ public @NonNull Reader[] getReaders() { if (mSecureElementService == null) { throw new IllegalStateException("service not connected to system"); } String[] readerNames; try { readerNames = mSecureElementService.getReaders(); } catch (RemoteException e) { throw new RuntimeException(e); } loadReaders(); Reader[] readers = new Reader[readerNames.length]; int i = 0; for (String readerName : readerNames) { if (mReaders.get(readerName) == null) { try { mReaders.put(readerName, new Reader(this, readerName, getReader(readerName))); readers[i++] = mReaders.get(readerName); } catch (Exception e) { Log.e(TAG, "Error adding Reader: " + readerName, e); return mReaders.values().toArray(new Reader[0]); } } else { readers[i++] = mReaders.get(readerName); /** * Obtain a UICC Reader instance with specific slot number from the SecureElementService * * @param slotNumber The index of the uicc slot. The index starts from 1. * @throws IllegalArgumentException if the reader object corresponding to the uiccSlotNumber * is not exist. * @return A Reader object for this uicc slot. */ public @NonNull Reader getUiccReader(int slotNumber) { if (slotNumber < 1) { throw new IllegalArgumentException("slotNumber should be larger than 0"); } loadReaders(); String readerName = UICC_TERMINAL + slotNumber; Reader reader = mReaders.get(readerName); if (reader == null) { throw new IllegalArgumentException("Reader:" + readerName + " doesn't exist"); } return readers; return reader; } /** Loading Loading @@ -270,4 +273,30 @@ public final class SEService { throw new IllegalStateException(e.getMessage()); } } /** * Load available Secure Element Readers */ private void loadReaders() { if (mSecureElementService == null) { throw new IllegalStateException("service not connected to system"); } String[] readerNames; try { readerNames = mSecureElementService.getReaders(); } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); } for (String readerName : readerNames) { if (mReaders.get(readerName) == null) { try { mReaders.put(readerName, new Reader(this, readerName, getReader(readerName))); } catch (Exception e) { Log.e(TAG, "Error adding Reader: " + readerName, e); } } } } }