diff options
| -rw-r--r-- | core/java/com/android/internal/util/ScreenshotHelper.java | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/core/java/com/android/internal/util/ScreenshotHelper.java b/core/java/com/android/internal/util/ScreenshotHelper.java index 69d3d6a6d521..c21a43e807a9 100644 --- a/core/java/com/android/internal/util/ScreenshotHelper.java +++ b/core/java/com/android/internal/util/ScreenshotHelper.java @@ -53,8 +53,6 @@ public class ScreenshotHelper { public ScreenshotHelper(Context context) { mContext = context; - IntentFilter filter = new IntentFilter(ACTION_USER_SWITCHED); - mContext.registerReceiver(mBroadcastReceiver, filter, Context.RECEIVER_EXPORTED); } /** @@ -108,6 +106,8 @@ public class ScreenshotHelper { public void takeScreenshotInternal(ScreenshotRequest request, @NonNull Handler handler, @Nullable Consumer<Uri> completionConsumer, long timeoutMs) { synchronized (mScreenshotLock) { + mContext.registerReceiver(mBroadcastReceiver, + new IntentFilter(ACTION_USER_SWITCHED), Context.RECEIVER_EXPORTED); final Runnable mScreenshotTimeout = () -> { synchronized (mScreenshotLock) { @@ -223,6 +223,11 @@ public class ScreenshotHelper { mScreenshotConnection = null; mScreenshotService = null; } + try { + mContext.unregisterReceiver(mBroadcastReceiver); + } catch (IllegalArgumentException e) { + Log.w(TAG, "Attempted to remove broadcast receiver twice"); + } } /** |