Loading core/java/android/nfc/NfcAdapter.java +23 −82 Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ import android.app.PendingIntent; import android.compat.annotation.UnsupportedAppUsage; import android.content.Context; import android.content.IntentFilter; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.net.Uri; import android.nfc.tech.MifareClassic; Loading Loading @@ -571,66 +570,6 @@ public final class NfcAdapter { public boolean onUnlockAttempted(Tag tag); } /** * Helper to check if this device has FEATURE_NFC_BEAM, but without using * a context. * Equivalent to * context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC_BEAM) */ private static boolean hasBeamFeature() { IPackageManager pm = ActivityThread.getPackageManager(); if (pm == null) { Log.e(TAG, "Cannot get package manager, assuming no Android Beam feature"); return false; } try { return pm.hasSystemFeature(PackageManager.FEATURE_NFC_BEAM, 0); } catch (RemoteException e) { Log.e(TAG, "Package manager query failed, assuming no Android Beam feature", e); return false; } } /** * Helper to check if this device has FEATURE_NFC, but without using * a context. * Equivalent to * context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC) */ private static boolean hasNfcFeature() { IPackageManager pm = ActivityThread.getPackageManager(); if (pm == null) { Log.e(TAG, "Cannot get package manager, assuming no NFC feature"); return false; } try { return pm.hasSystemFeature(PackageManager.FEATURE_NFC, 0); } catch (RemoteException e) { Log.e(TAG, "Package manager query failed, assuming no NFC feature", e); return false; } } /** * Helper to check if this device is NFC HCE capable, by checking for * FEATURE_NFC_HOST_CARD_EMULATION and/or FEATURE_NFC_HOST_CARD_EMULATION_NFCF, * but without using a context. */ private static boolean hasNfcHceFeature() { IPackageManager pm = ActivityThread.getPackageManager(); if (pm == null) { Log.e(TAG, "Cannot get package manager, assuming no NFC feature"); return false; } try { return pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION, 0) || pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION_NFCF, 0); } catch (RemoteException e) { Log.e(TAG, "Package manager query failed, assuming no NFC feature", e); return false; } } /** * Return list of Secure Elements which support off host card emulation. * Loading @@ -640,24 +579,22 @@ public final class NfcAdapter { * @hide */ public @NonNull List<String> getSupportedOffHostSecureElements() { if (mContext == null) { throw new UnsupportedOperationException("You need a context on NfcAdapter to use the " + " getSupportedOffHostSecureElements APIs"); } List<String> offHostSE = new ArrayList<String>(); IPackageManager pm = ActivityThread.getPackageManager(); PackageManager pm = mContext.getPackageManager(); if (pm == null) { Log.e(TAG, "Cannot get package manager, assuming no off-host CE feature"); return offHostSE; } try { if (pm.hasSystemFeature(PackageManager.FEATURE_NFC_OFF_HOST_CARD_EMULATION_UICC, 0)) { if (pm.hasSystemFeature(PackageManager.FEATURE_NFC_OFF_HOST_CARD_EMULATION_UICC)) { offHostSE.add("SIM"); } if (pm.hasSystemFeature(PackageManager.FEATURE_NFC_OFF_HOST_CARD_EMULATION_ESE, 0)) { if (pm.hasSystemFeature(PackageManager.FEATURE_NFC_OFF_HOST_CARD_EMULATION_ESE)) { offHostSE.add("eSE"); } } catch (RemoteException e) { Log.e(TAG, "Package manager query failed, assuming no off-host CE feature", e); offHostSE.clear(); return offHostSE; } return offHostSE; } Loading @@ -668,10 +605,20 @@ public final class NfcAdapter { */ @UnsupportedAppUsage public static synchronized NfcAdapter getNfcAdapter(Context context) { if (context == null) { if (sNullContextNfcAdapter == null) { sNullContextNfcAdapter = new NfcAdapter(null); } return sNullContextNfcAdapter; } if (!sIsInitialized) { sHasNfcFeature = hasNfcFeature(); sHasBeamFeature = hasBeamFeature(); boolean hasHceFeature = hasNfcHceFeature(); PackageManager pm; pm = context.getPackageManager(); sHasNfcFeature = pm.hasSystemFeature(PackageManager.FEATURE_NFC); sHasBeamFeature = pm.hasSystemFeature(PackageManager.FEATURE_NFC_BEAM); boolean hasHceFeature = pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION) || pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION_NFCF); /* is this device meant to have NFC */ if (!sHasNfcFeature && !hasHceFeature) { Log.v(TAG, "this device does not have NFC support"); Loading Loading @@ -707,12 +654,6 @@ public final class NfcAdapter { sIsInitialized = true; } if (context == null) { if (sNullContextNfcAdapter == null) { sNullContextNfcAdapter = new NfcAdapter(null); } return sNullContextNfcAdapter; } NfcAdapter adapter = sNfcAdapters.get(context); if (adapter == null) { adapter = new NfcAdapter(context); Loading core/java/android/nfc/cardemulation/CardEmulation.java +3 −10 Original line number Diff line number Diff line Loading @@ -22,11 +22,9 @@ import android.annotation.RequiresPermission; import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; import android.app.Activity; import android.app.ActivityThread; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.nfc.INfcCardEmulation; import android.nfc.NfcAdapter; Loading Loading @@ -158,20 +156,15 @@ public final class CardEmulation { throw new UnsupportedOperationException(); } if (!sIsInitialized) { IPackageManager pm = ActivityThread.getPackageManager(); PackageManager pm = context.getPackageManager(); if (pm == null) { Log.e(TAG, "Cannot get PackageManager"); throw new UnsupportedOperationException(); } try { if (!pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION, 0)) { if (!pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)) { Log.e(TAG, "This device does not support card emulation"); throw new UnsupportedOperationException(); } } catch (RemoteException e) { Log.e(TAG, "PackageManager query failed."); throw new UnsupportedOperationException(); } sIsInitialized = true; } CardEmulation manager = sCardEmus.get(context); Loading core/java/android/nfc/cardemulation/NfcFCardEmulation.java +3 −10 Original line number Diff line number Diff line Loading @@ -17,10 +17,8 @@ package android.nfc.cardemulation; import android.app.Activity; import android.app.ActivityThread; import android.content.ComponentName; import android.content.Context; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.nfc.INfcFCardEmulation; import android.nfc.NfcAdapter; Loading Loading @@ -70,20 +68,15 @@ public final class NfcFCardEmulation { throw new UnsupportedOperationException(); } if (!sIsInitialized) { IPackageManager pm = ActivityThread.getPackageManager(); PackageManager pm = context.getPackageManager(); if (pm == null) { Log.e(TAG, "Cannot get PackageManager"); throw new UnsupportedOperationException(); } try { if (!pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION_NFCF, 0)) { if (!pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION_NFCF)) { Log.e(TAG, "This device does not support NFC-F card emulation"); throw new UnsupportedOperationException(); } } catch (RemoteException e) { Log.e(TAG, "PackageManager query failed."); throw new UnsupportedOperationException(); } sIsInitialized = true; } NfcFCardEmulation manager = sCardEmus.get(context); Loading Loading
core/java/android/nfc/NfcAdapter.java +23 −82 Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ import android.app.PendingIntent; import android.compat.annotation.UnsupportedAppUsage; import android.content.Context; import android.content.IntentFilter; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.net.Uri; import android.nfc.tech.MifareClassic; Loading Loading @@ -571,66 +570,6 @@ public final class NfcAdapter { public boolean onUnlockAttempted(Tag tag); } /** * Helper to check if this device has FEATURE_NFC_BEAM, but without using * a context. * Equivalent to * context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC_BEAM) */ private static boolean hasBeamFeature() { IPackageManager pm = ActivityThread.getPackageManager(); if (pm == null) { Log.e(TAG, "Cannot get package manager, assuming no Android Beam feature"); return false; } try { return pm.hasSystemFeature(PackageManager.FEATURE_NFC_BEAM, 0); } catch (RemoteException e) { Log.e(TAG, "Package manager query failed, assuming no Android Beam feature", e); return false; } } /** * Helper to check if this device has FEATURE_NFC, but without using * a context. * Equivalent to * context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC) */ private static boolean hasNfcFeature() { IPackageManager pm = ActivityThread.getPackageManager(); if (pm == null) { Log.e(TAG, "Cannot get package manager, assuming no NFC feature"); return false; } try { return pm.hasSystemFeature(PackageManager.FEATURE_NFC, 0); } catch (RemoteException e) { Log.e(TAG, "Package manager query failed, assuming no NFC feature", e); return false; } } /** * Helper to check if this device is NFC HCE capable, by checking for * FEATURE_NFC_HOST_CARD_EMULATION and/or FEATURE_NFC_HOST_CARD_EMULATION_NFCF, * but without using a context. */ private static boolean hasNfcHceFeature() { IPackageManager pm = ActivityThread.getPackageManager(); if (pm == null) { Log.e(TAG, "Cannot get package manager, assuming no NFC feature"); return false; } try { return pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION, 0) || pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION_NFCF, 0); } catch (RemoteException e) { Log.e(TAG, "Package manager query failed, assuming no NFC feature", e); return false; } } /** * Return list of Secure Elements which support off host card emulation. * Loading @@ -640,24 +579,22 @@ public final class NfcAdapter { * @hide */ public @NonNull List<String> getSupportedOffHostSecureElements() { if (mContext == null) { throw new UnsupportedOperationException("You need a context on NfcAdapter to use the " + " getSupportedOffHostSecureElements APIs"); } List<String> offHostSE = new ArrayList<String>(); IPackageManager pm = ActivityThread.getPackageManager(); PackageManager pm = mContext.getPackageManager(); if (pm == null) { Log.e(TAG, "Cannot get package manager, assuming no off-host CE feature"); return offHostSE; } try { if (pm.hasSystemFeature(PackageManager.FEATURE_NFC_OFF_HOST_CARD_EMULATION_UICC, 0)) { if (pm.hasSystemFeature(PackageManager.FEATURE_NFC_OFF_HOST_CARD_EMULATION_UICC)) { offHostSE.add("SIM"); } if (pm.hasSystemFeature(PackageManager.FEATURE_NFC_OFF_HOST_CARD_EMULATION_ESE, 0)) { if (pm.hasSystemFeature(PackageManager.FEATURE_NFC_OFF_HOST_CARD_EMULATION_ESE)) { offHostSE.add("eSE"); } } catch (RemoteException e) { Log.e(TAG, "Package manager query failed, assuming no off-host CE feature", e); offHostSE.clear(); return offHostSE; } return offHostSE; } Loading @@ -668,10 +605,20 @@ public final class NfcAdapter { */ @UnsupportedAppUsage public static synchronized NfcAdapter getNfcAdapter(Context context) { if (context == null) { if (sNullContextNfcAdapter == null) { sNullContextNfcAdapter = new NfcAdapter(null); } return sNullContextNfcAdapter; } if (!sIsInitialized) { sHasNfcFeature = hasNfcFeature(); sHasBeamFeature = hasBeamFeature(); boolean hasHceFeature = hasNfcHceFeature(); PackageManager pm; pm = context.getPackageManager(); sHasNfcFeature = pm.hasSystemFeature(PackageManager.FEATURE_NFC); sHasBeamFeature = pm.hasSystemFeature(PackageManager.FEATURE_NFC_BEAM); boolean hasHceFeature = pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION) || pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION_NFCF); /* is this device meant to have NFC */ if (!sHasNfcFeature && !hasHceFeature) { Log.v(TAG, "this device does not have NFC support"); Loading Loading @@ -707,12 +654,6 @@ public final class NfcAdapter { sIsInitialized = true; } if (context == null) { if (sNullContextNfcAdapter == null) { sNullContextNfcAdapter = new NfcAdapter(null); } return sNullContextNfcAdapter; } NfcAdapter adapter = sNfcAdapters.get(context); if (adapter == null) { adapter = new NfcAdapter(context); Loading
core/java/android/nfc/cardemulation/CardEmulation.java +3 −10 Original line number Diff line number Diff line Loading @@ -22,11 +22,9 @@ import android.annotation.RequiresPermission; import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; import android.app.Activity; import android.app.ActivityThread; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.nfc.INfcCardEmulation; import android.nfc.NfcAdapter; Loading Loading @@ -158,20 +156,15 @@ public final class CardEmulation { throw new UnsupportedOperationException(); } if (!sIsInitialized) { IPackageManager pm = ActivityThread.getPackageManager(); PackageManager pm = context.getPackageManager(); if (pm == null) { Log.e(TAG, "Cannot get PackageManager"); throw new UnsupportedOperationException(); } try { if (!pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION, 0)) { if (!pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)) { Log.e(TAG, "This device does not support card emulation"); throw new UnsupportedOperationException(); } } catch (RemoteException e) { Log.e(TAG, "PackageManager query failed."); throw new UnsupportedOperationException(); } sIsInitialized = true; } CardEmulation manager = sCardEmus.get(context); Loading
core/java/android/nfc/cardemulation/NfcFCardEmulation.java +3 −10 Original line number Diff line number Diff line Loading @@ -17,10 +17,8 @@ package android.nfc.cardemulation; import android.app.Activity; import android.app.ActivityThread; import android.content.ComponentName; import android.content.Context; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.nfc.INfcFCardEmulation; import android.nfc.NfcAdapter; Loading Loading @@ -70,20 +68,15 @@ public final class NfcFCardEmulation { throw new UnsupportedOperationException(); } if (!sIsInitialized) { IPackageManager pm = ActivityThread.getPackageManager(); PackageManager pm = context.getPackageManager(); if (pm == null) { Log.e(TAG, "Cannot get PackageManager"); throw new UnsupportedOperationException(); } try { if (!pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION_NFCF, 0)) { if (!pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION_NFCF)) { Log.e(TAG, "This device does not support NFC-F card emulation"); throw new UnsupportedOperationException(); } } catch (RemoteException e) { Log.e(TAG, "PackageManager query failed."); throw new UnsupportedOperationException(); } sIsInitialized = true; } NfcFCardEmulation manager = sCardEmus.get(context); Loading