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

Commit c6b17a06 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 am: 420f0480

Change-Id: I325f8910c33bc7994a12a7ac0851df2f7109ef38
parents cbb57090 420f0480
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;
        }
    }
}