From 97644bc45bb9d467a2633a507f7e3a0276c3e702 Mon Sep 17 00:00:00 2001 From: Dmitrii Date: Mon, 30 Jun 2025 06:45:57 +0000 Subject: [PATCH] NfcAndPaymentFragmentController: fix crash 06-29 23:09:26.799 5606 5606 E AndroidRuntime: Caused by: java.lang.IllegalArgumentException: Receiver not registered: com.android.settings.connecteddevice.NfcAndPaymentFragmentController$1@95014d9 06-29 23:09:26.799 5606 5606 E AndroidRuntime: at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:1695) 06-29 23:09:26.799 5606 5606 E AndroidRuntime: at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:2025) 06-29 23:09:26.799 5606 5606 E AndroidRuntime: at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:843) 06-29 23:09:26.799 5606 5606 E AndroidRuntime: at com.android.settings.connecteddevice.NfcAndPaymentFragmentController.onStop(NfcAndPaymentFragmentController.java:106) 06-29 23:09:26.799 5606 5606 E AndroidRuntime: at com.android.settingslib.core.lifecycle.Lifecycle.onStop(Lifecycle.java:169) 06-29 23:09:26.799 5606 5606 E AndroidRuntime: at com.android.settingslib.core.lifecycle.Lifecycle.-$$Nest$monStop(Lifecycle.java:0) 06-29 23:09:26.799 5606 5606 E AndroidRuntime: at com.android.settingslib.core.lifecycle.Lifecycle$LifecycleProxy.onLifecycleEvent(Lifecycle.java:231) Signed-off-by: Dmitrii --- .../NfcAndPaymentFragmentController.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/com/android/settings/connecteddevice/NfcAndPaymentFragmentController.java b/src/com/android/settings/connecteddevice/NfcAndPaymentFragmentController.java index f16dd378db5..4a52d15bc7a 100644 --- a/src/com/android/settings/connecteddevice/NfcAndPaymentFragmentController.java +++ b/src/com/android/settings/connecteddevice/NfcAndPaymentFragmentController.java @@ -44,6 +44,8 @@ public class NfcAndPaymentFragmentController extends BasePreferenceController private final IntentFilter mIntentFilter; private Preference mPreference; + private boolean mIsReceiverRegistered = false; + private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { @@ -99,20 +101,18 @@ public class NfcAndPaymentFragmentController extends BasePreferenceController @Override public void onStop() { - if (!isNfcAvailable()) { - return; + if (mIsReceiverRegistered) { + mContext.unregisterReceiver(mReceiver); + mIsReceiverRegistered = false; } - - mContext.unregisterReceiver(mReceiver); } @Override public void onResume() { - if (!isNfcAvailable()) { - return; + if (isNfcAvailable() && !mIsReceiverRegistered) { + mContext.registerReceiver(mReceiver, mIntentFilter); + mIsReceiverRegistered = true; } - - mContext.registerReceiver(mReceiver, mIntentFilter); } private boolean isNfcAvailable() {