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

Commit 5affad6f authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Set default discovery technology" into main

parents dfcfe8a1 1fac3ff4
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
@@ -1874,14 +1888,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) {
@@ -1901,8 +1907,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"
}