Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 420f0480 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "Do not call to SecureElement Service if device does not support any...

Merge "Do not call to SecureElement Service if device does not support any OMAPI readers" am: 98a96a40 am: 4d7d5c2c

Change-Id: Ia5c252c4a7a52cdbb4e751076e1de6e924d07dff
parents f6253ef4 4d7d5c2c
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -22,11 +22,14 @@

package android.se.omapi;

import android.app.ActivityThread;
import android.annotation.NonNull;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
@@ -140,6 +143,10 @@ public final class SEService {
            throw new NullPointerException("Arguments must not be null");
        }

        if (!hasOMAPIReaders()) {
            throw new UnsupportedOperationException("Device does not support any OMAPI reader");
        }

        mContext = context;
        mSEListener.mListener = listener;
        mSEListener.mExecutor = executor;
@@ -270,4 +277,23 @@ public final class SEService {
            throw new IllegalStateException(e.getMessage());
        }
    }

    /**
     * Helper to check if this device support any OMAPI readers
     */
    private static boolean hasOMAPIReaders() {
        IPackageManager pm = ActivityThread.getPackageManager();
        if (pm == null) {
            Log.e(TAG, "Cannot get package manager, assuming OMAPI readers supported");
            return true;
        }
        try {
            return pm.hasSystemFeature(PackageManager.FEATURE_SE_OMAPI_UICC, 0)
                || pm.hasSystemFeature(PackageManager.FEATURE_SE_OMAPI_ESE, 0)
                || pm.hasSystemFeature(PackageManager.FEATURE_SE_OMAPI_SD, 0);
        } catch (RemoteException e) {
            Log.e(TAG, "Package manager query failed, assuming OMAPI readers supported", e);
            return true;
        }
    }
}