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

Commit 3fd7f894 authored by Jack Yu's avatar Jack Yu
Browse files

Do not call to SecureElement Service if device does not support any OMAPI readers

Bug: 131062577
Test: CTS OMAPI
Change-Id: Ifde59f1a25054e3e057ca7cfee93712fbdeede2a
parent 831cad71
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;
        }
    }
}