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

Commit 1fac3ff4 authored by Alisher Alikhodjaev's avatar Alisher Alikhodjaev
Browse files

Set default discovery technology

Bug: 321311407
Test: off/on, read tag
Change-Id: Ice76dda2b4bb97df60dc94521436393a9e829ea5
parent be819304
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ package android.nfc {
    field @FlaggedApi("android.nfc.enable_nfc_mainline") public static final String ACTION_REQUIRE_UNLOCK_FOR_NFC = "android.nfc.action.REQUIRE_UNLOCK_FOR_NFC";
    field @FlaggedApi("android.nfc.enable_nfc_mainline") @RequiresPermission(android.Manifest.permission.SHOW_CUSTOMIZED_RESOLVER) public static final String ACTION_SHOW_NFC_RESOLVER = "android.nfc.action.SHOW_NFC_RESOLVER";
    field @FlaggedApi("android.nfc.enable_nfc_mainline") public static final String EXTRA_RESOLVE_INFOS = "android.nfc.extra.RESOLVE_INFOS";
    field @FlaggedApi("android.nfc.nfc_set_default_disc_tech") @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static final int FLAG_SET_DEFAULT_TECH = 1073741824; // 0x40000000
    field @FlaggedApi("android.nfc.nfc_vendor_cmd") public static final int MESSAGE_TYPE_COMMAND = 1; // 0x1
    field @FlaggedApi("android.nfc.nfc_vendor_cmd") public static final int SEND_VENDOR_NCI_STATUS_FAILED = 3; // 0x3
    field @FlaggedApi("android.nfc.nfc_vendor_cmd") public static final int SEND_VENDOR_NCI_STATUS_MESSAGE_CORRUPTED = 2; // 0x2
+35 −11
Original line number Diff line number Diff line
@@ -340,7 +340,8 @@ public final class NfcAdapter {
    public static final int FLAG_READER_NFC_BARCODE = 0x10;

    /** @hide */
    @IntDef(flag = true, prefix = {"FLAG_READER_"}, value = {
    @IntDef(flag = true, value = {
        FLAG_SET_DEFAULT_TECH,
        FLAG_READER_KEEP,
        FLAG_READER_DISABLE,
        FLAG_READER_NFC_A,
@@ -438,7 +439,8 @@ public final class NfcAdapter {
    public static final int FLAG_USE_ALL_TECH = 0xff;

    /** @hide */
    @IntDef(flag = true, prefix = {"FLAG_LISTEN_"}, value = {
    @IntDef(flag = true, value = {
        FLAG_SET_DEFAULT_TECH,
        FLAG_LISTEN_KEEP,
        FLAG_LISTEN_DISABLE,
        FLAG_LISTEN_NFC_PASSIVE_A,
@@ -448,6 +450,18 @@ public final class NfcAdapter {
    @Retention(RetentionPolicy.SOURCE)
    public @interface ListenTechnology {}

    /**
     * Flag used in {@link #setDiscoveryTechnology(Activity, int, int)}.
     * <p>
     * Setting this flag changes the default listen or poll tech.
     * Only available to privileged apps.
     * @hide
     */
    @SystemApi
    @FlaggedApi(Flags.FLAG_NFC_SET_DEFAULT_DISC_TECH)
    @RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS)
    public static final int FLAG_SET_DEFAULT_TECH = 0x40000000;

    /**
     * @hide
     * @removed
@@ -1870,14 +1884,6 @@ public final class NfcAdapter {
    public void setDiscoveryTechnology(@NonNull Activity activity,
            @PollTechnology int pollTechnology, @ListenTechnology int listenTechnology) {

        // A special treatment of the _KEEP flags
        if ((listenTechnology & FLAG_LISTEN_KEEP) != 0) {
            listenTechnology = -1;
        }
        if ((pollTechnology & FLAG_READER_KEEP) != 0) {
            pollTechnology = -1;
        }

        if (listenTechnology == FLAG_LISTEN_DISABLE) {
            synchronized (sLock) {
                if (!sHasNfcFeature) {
@@ -1897,8 +1903,26 @@ public final class NfcAdapter {
                }
            }
        }
    /*
     * Privileged FLAG to set technology mask for all data processed by NFC controller
     * Note: Use with caution! The app is responsible for ensuring that the discovery
     * technology mask is returned to default.
     * Note: FLAG_USE_ALL_TECH used with _KEEP flags will reset the technolody to android default
     */
        if (Flags.nfcSetDefaultDiscTech()
                && ((pollTechnology & FLAG_SET_DEFAULT_TECH) == FLAG_SET_DEFAULT_TECH
                || (listenTechnology & FLAG_SET_DEFAULT_TECH) == FLAG_SET_DEFAULT_TECH)) {
            Binder token = new Binder();
            try {
                NfcAdapter.sService.updateDiscoveryTechnology(token,
                        pollTechnology, listenTechnology);
            } catch (RemoteException e) {
                attemptDeadServiceRecovery(e);
            }
        } else {
            mNfcActivityManager.setDiscoveryTech(activity, pollTechnology, listenTechnology);
        }
    }

    /**
     * Restore the poll/listen technologies of NFC controller to its default state,
+9 −0
Original line number Diff line number Diff line
@@ -101,3 +101,12 @@ flag {
    description: "Enable nfc state change API"
    bug: "319934052"
}

flag {
    name: "nfc_set_default_disc_tech"
    is_exported: true
    namespace: "nfc"
    description: "Flag for NFC set default disc tech API"
    bug: "321311407"
}