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

Commit 12fed4b1 authored by Roshan Pius's avatar Roshan Pius
Browse files

Revert "nfc(api): Remove fg checks from API class"

Revert submission 2448864-nfc_remove_activity_fg_check_in_api

Reason for revert: Maybe the root cause of b/271214245

Reverted changes: /q/submissionid:2448864-nfc_remove_activity_fg_check_in_api

Bug: 263565738
Test: N/A
Change-Id: I594f99c8a90682c78704f96a2210277b2b2b01d6
parent d6cd6eb7
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -26,6 +26,8 @@ import android.annotation.SdkConstant.SdkConstantType;
import android.annotation.SystemApi;
import android.annotation.UserIdInt;
import android.app.Activity;
import android.app.ActivityThread;
import android.app.OnActivityPausedListener;
import android.app.PendingIntent;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.Context;
@@ -1568,11 +1570,17 @@ public final class NfcAdapter {
        if (activity == null || intent == null) {
            throw new NullPointerException();
        }
        if (!activity.isResumed()) {
            throw new IllegalStateException("Foreground dispatch can only be enabled " +
                    "when your activity is resumed");
        }
        try {
            TechListParcel parcel = null;
            if (techLists != null && techLists.length > 0) {
                parcel = new TechListParcel(techLists);
            }
            ActivityThread.currentActivityThread().registerOnActivityPausedListener(activity,
                    mForegroundDispatchListener);
            sService.setForegroundDispatch(intent, filters, parcel);
        } catch (RemoteException e) {
            attemptDeadServiceRecovery(e);
@@ -1600,8 +1608,25 @@ public final class NfcAdapter {
                throw new UnsupportedOperationException();
            }
        }
        ActivityThread.currentActivityThread().unregisterOnActivityPausedListener(activity,
                mForegroundDispatchListener);
        disableForegroundDispatchInternal(activity, false);
    }

    OnActivityPausedListener mForegroundDispatchListener = new OnActivityPausedListener() {
        @Override
        public void onPaused(Activity activity) {
            disableForegroundDispatchInternal(activity, true);
        }
    };

    void disableForegroundDispatchInternal(Activity activity, boolean force) {
        try {
            sService.setForegroundDispatch(null, null, null);
            if (!force && !activity.isResumed()) {
                throw new IllegalStateException("You must disable foreground dispatching " +
                        "while your activity is still resumed");
            }
        } catch (RemoteException e) {
            attemptDeadServiceRecovery(e);
        }