From e90074ffef400152f3872e5bc8277911daaebaea Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Tue, 31 Jan 2023 10:00:25 -0400 Subject: [PATCH] Fix issue with bottom sheets. --- .../java/org/thoughtcrime/securesms/BaseActivity.java | 11 ++--------- .../FixedRoundedCornerBottomSheetDialogFragment.kt | 6 ++++++ .../settings/DSLSettingsBottomSheetFragment.kt | 6 ++++++ .../conversation/ShowAdminsBottomSheetDialog.java | 7 +++++++ ...oupLinkInviteFriendsBottomSheetDialogFragment.java | 7 +++++++ .../joining/GroupJoinBottomSheetDialogFragment.java | 7 +++++++ ...upJoinUpdateRequiredBottomSheetDialogFragment.java | 7 +++++++ .../GroupsLearnMoreBottomSheetDialogFragment.java | 7 +++++++ ...roupsV1MigrationInfoBottomSheetDialogFragment.java | 7 +++++++ ...1MigrationInitiationBottomSheetDialogFragment.java | 7 +++++++ .../v2/review/QualitySelectorBottomSheetDialog.java | 7 +++++++ .../payments/confirm/ConfirmPaymentFragment.java | 7 +++++++ .../securesms/proxy/ProxyBottomSheetFragment.java | 7 +++++++ .../ratelimit/RecaptchaProofBottomSheetFragment.java | 7 +++++++ .../reactions/ReactionsBottomSheetDialogFragment.java | 6 ++++++ .../RecipientBottomSheetDialogFragment.java | 7 +++++++ .../GroupLinkBottomSheetDialogFragment.java | 7 +++++++ .../org/thoughtcrime/securesms/util/WindowUtil.java | 9 +++++++++ 18 files changed, 120 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/BaseActivity.java b/app/src/main/java/org/thoughtcrime/securesms/BaseActivity.java index 938c9fcd28..0efd4db83b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/BaseActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/BaseActivity.java @@ -19,6 +19,7 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.util.AppStartup; import org.thoughtcrime.securesms.util.ConfigurationUtil; import org.thoughtcrime.securesms.util.TextSecurePreferences; +import org.thoughtcrime.securesms.util.WindowUtil; import org.thoughtcrime.securesms.util.dynamiclanguage.DynamicLanguageContextWrapper; import java.util.Objects; @@ -42,7 +43,7 @@ public abstract class BaseActivity extends AppCompatActivity { @Override protected void onResume() { super.onResume(); - initializeScreenshotSecurity(); + WindowUtil.initializeScreenshotSecurity(this, getWindow()); } @Override @@ -64,14 +65,6 @@ public abstract class BaseActivity extends AppCompatActivity { super.onDestroy(); } - private void initializeScreenshotSecurity() { - if (TextSecurePreferences.isScreenSecurityEnabled(this)) { - getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); - } else { - getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); - } - } - protected void startActivitySceneTransition(Intent intent, View sharedView, String transitionName) { Bundle bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(this, sharedView, transitionName) .toBundle(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/FixedRoundedCornerBottomSheetDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/FixedRoundedCornerBottomSheetDialogFragment.kt index 4c01a3d57d..8669b422e2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/FixedRoundedCornerBottomSheetDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/FixedRoundedCornerBottomSheetDialogFragment.kt @@ -18,6 +18,7 @@ import com.google.android.material.shape.ShapeAppearanceModel import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.util.ThemeUtil import org.thoughtcrime.securesms.util.ViewUtil +import org.thoughtcrime.securesms.util.WindowUtil /** * Forces rounded corners on BottomSheet @@ -39,6 +40,11 @@ abstract class FixedRoundedCornerBottomSheetDialogFragment : BottomSheetDialogFr setStyle(STYLE_NORMAL, themeResId) } + override fun onResume() { + super.onResume() + WindowUtil.initializeScreenshotSecurity(requireContext(), dialog!!.window!!) + } + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val dialog = super.onCreateDialog(savedInstanceState) as BottomSheetDialog diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsBottomSheetFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsBottomSheetFragment.kt index f0b00b8bd8..ba9d5d4b97 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsBottomSheetFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsBottomSheetFragment.kt @@ -13,6 +13,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.FixedRoundedCornerBottomSheetDialogFragment +import org.thoughtcrime.securesms.util.WindowUtil abstract class DSLSettingsBottomSheetFragment( @LayoutRes private val layoutId: Int = R.layout.dsl_settings_bottom_sheet, @@ -39,6 +40,11 @@ abstract class DSLSettingsBottomSheetFragment( bindAdapter(adapter) } + override fun onResume() { + super.onResume() + WindowUtil.initializeScreenshotSecurity(requireContext(), dialog!!.window!!) + } + abstract fun bindAdapter(adapter: DSLSettingsAdapter) private class EdgeEffectFactory : RecyclerView.EdgeEffectFactory() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ShowAdminsBottomSheetDialog.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ShowAdminsBottomSheetDialog.java index 1d98c48f36..1b69b70a91 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ShowAdminsBottomSheetDialog.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ShowAdminsBottomSheetDialog.java @@ -24,6 +24,7 @@ import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.util.BottomSheetUtil; import org.thoughtcrime.securesms.util.CommunicationActions; import org.thoughtcrime.securesms.util.LifecycleDisposable; +import org.thoughtcrime.securesms.util.WindowUtil; import java.util.Collections; import java.util.List; @@ -81,6 +82,12 @@ public final class ShowAdminsBottomSheetDialog extends BottomSheetDialogFragment .subscribe(list::setDisplayOnlyMembers)); } + @Override + public void onResume() { + super.onResume(); + WindowUtil.initializeScreenshotSecurity(requireContext(), requireDialog().getWindow()); + } + @Override public void show(@NonNull FragmentManager manager, @Nullable String tag) { BottomSheetUtil.show(manager, tag, this); diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/invite/GroupLinkInviteFriendsBottomSheetDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/invite/GroupLinkInviteFriendsBottomSheetDialogFragment.java index 383727f792..504891fcfd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/invite/GroupLinkInviteFriendsBottomSheetDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/invite/GroupLinkInviteFriendsBottomSheetDialogFragment.java @@ -24,6 +24,7 @@ import org.thoughtcrime.securesms.groups.GroupId; import org.thoughtcrime.securesms.recipients.ui.sharablegrouplink.GroupLinkBottomSheetDialogFragment; import org.thoughtcrime.securesms.util.BottomSheetUtil; import org.thoughtcrime.securesms.util.ThemeUtil; +import org.thoughtcrime.securesms.util.WindowUtil; import org.thoughtcrime.securesms.util.views.SimpleProgressDialog; import java.util.Objects; @@ -129,6 +130,12 @@ public final class GroupLinkInviteFriendsBottomSheetDialogFragment extends Botto ); } + @Override + public void onResume() { + super.onResume(); + WindowUtil.initializeScreenshotSecurity(requireContext(), requireDialog().getWindow()); + } + protected void shareGroupLinkAndDismiss(@NonNull GroupId.V2 groupId) { dismiss(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/GroupJoinBottomSheetDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/GroupJoinBottomSheetDialogFragment.java index 9f1e9ddce5..4590d0bd4c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/GroupJoinBottomSheetDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/GroupJoinBottomSheetDialogFragment.java @@ -34,6 +34,7 @@ import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.util.BottomSheetUtil; import org.thoughtcrime.securesms.util.LongClickMovementMethod; import org.thoughtcrime.securesms.util.ThemeUtil; +import org.thoughtcrime.securesms.util.WindowUtil; public final class GroupJoinBottomSheetDialogFragment extends BottomSheetDialogFragment { @@ -140,6 +141,12 @@ public final class GroupJoinBottomSheetDialogFragment extends BottomSheetDialogF ); } + @Override + public void onResume() { + super.onResume(); + WindowUtil.initializeScreenshotSecurity(requireContext(), requireDialog().getWindow()); + } + private void updateGroupDescription(@NonNull String name, @NonNull String description) { groupDescription.setVisibility(View.VISIBLE); groupDescription.setMovementMethod(LongClickMovementMethod.getInstance(requireContext())); diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/GroupJoinUpdateRequiredBottomSheetDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/GroupJoinUpdateRequiredBottomSheetDialogFragment.java index e1689c83c3..ff70d6a0e7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/GroupJoinUpdateRequiredBottomSheetDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/GroupJoinUpdateRequiredBottomSheetDialogFragment.java @@ -18,6 +18,7 @@ import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.util.BottomSheetUtil; import org.thoughtcrime.securesms.util.PlayStoreUtil; import org.thoughtcrime.securesms.util.ThemeUtil; +import org.thoughtcrime.securesms.util.WindowUtil; public final class GroupJoinUpdateRequiredBottomSheetDialogFragment extends BottomSheetDialogFragment { @@ -62,6 +63,12 @@ public final class GroupJoinUpdateRequiredBottomSheetDialogFragment extends Bott }); } + @Override + public void onResume() { + super.onResume(); + WindowUtil.initializeScreenshotSecurity(requireContext(), requireDialog().getWindow()); + } + @Override public void show(@NonNull FragmentManager manager, @Nullable String tag) { BottomSheetUtil.show(manager, tag, this); diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/managegroup/dialogs/GroupsLearnMoreBottomSheetDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/managegroup/dialogs/GroupsLearnMoreBottomSheetDialogFragment.java index 6dee7385a5..f7d2e880c3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/managegroup/dialogs/GroupsLearnMoreBottomSheetDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/managegroup/dialogs/GroupsLearnMoreBottomSheetDialogFragment.java @@ -15,6 +15,7 @@ import com.google.android.material.bottomsheet.BottomSheetDialogFragment; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.util.BottomSheetUtil; import org.thoughtcrime.securesms.util.ThemeUtil; +import org.thoughtcrime.securesms.util.WindowUtil; public final class GroupsLearnMoreBottomSheetDialogFragment extends BottomSheetDialogFragment { @@ -40,6 +41,12 @@ public final class GroupsLearnMoreBottomSheetDialogFragment extends BottomSheetD return view; } + @Override + public void onResume() { + super.onResume(); + WindowUtil.initializeScreenshotSecurity(requireContext(), requireDialog().getWindow()); + } + @Override public void show(@NonNull FragmentManager manager, @Nullable String tag) { BottomSheetUtil.show(manager, tag, this); diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationInfoBottomSheetDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationInfoBottomSheetDialogFragment.java index 1496e73e8f..9918affecf 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationInfoBottomSheetDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationInfoBottomSheetDialogFragment.java @@ -20,6 +20,7 @@ import org.thoughtcrime.securesms.groups.ui.GroupMemberListView; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.util.BottomSheetUtil; import org.thoughtcrime.securesms.util.ThemeUtil; +import org.thoughtcrime.securesms.util.WindowUtil; import java.util.List; @@ -85,6 +86,12 @@ public final class GroupsV1MigrationInfoBottomSheetDialogFragment extends Bottom view.findViewById(R.id.gv1_learn_more_ok_button).setOnClickListener(v -> dismiss()); } + @Override + public void onResume() { + super.onResume(); + WindowUtil.initializeScreenshotSecurity(requireContext(), requireDialog().getWindow()); + } + @Override public void show(@NonNull FragmentManager manager, @Nullable String tag) { BottomSheetUtil.show(manager, tag, this); diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationInitiationBottomSheetDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationInitiationBottomSheetDialogFragment.java index 7b7b2ead10..b54b9524a9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationInitiationBottomSheetDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationInitiationBottomSheetDialogFragment.java @@ -21,6 +21,7 @@ import org.thoughtcrime.securesms.groups.ui.GroupMemberListView; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.util.BottomSheetUtil; import org.thoughtcrime.securesms.util.ThemeUtil; +import org.thoughtcrime.securesms.util.WindowUtil; import org.thoughtcrime.securesms.util.views.SimpleProgressDialog; /** @@ -94,6 +95,12 @@ public final class GroupsV1MigrationInitiationBottomSheetDialogFragment extends view.findViewById(R.id.gv1_migrate_cancel_button).setOnClickListener(v -> dismiss()); } + @Override + public void onResume() { + super.onResume(); + WindowUtil.initializeScreenshotSecurity(requireContext(), requireDialog().getWindow()); + } + @Override public void show(@NonNull FragmentManager manager, @Nullable String tag) { BottomSheetUtil.show(manager, tag, this); diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/QualitySelectorBottomSheetDialog.java b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/QualitySelectorBottomSheetDialog.java index 602142ff68..5e985a952f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/QualitySelectorBottomSheetDialog.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/QualitySelectorBottomSheetDialog.java @@ -19,6 +19,7 @@ import org.thoughtcrime.securesms.mediasend.v2.MediaSelectionState; import org.thoughtcrime.securesms.mediasend.v2.MediaSelectionViewModel; import org.thoughtcrime.securesms.mms.SentMediaQuality; import org.thoughtcrime.securesms.util.BottomSheetUtil; +import org.thoughtcrime.securesms.util.WindowUtil; import org.thoughtcrime.securesms.util.views.CheckedLinearLayout; /** @@ -67,6 +68,12 @@ public final class QualitySelectorBottomSheetDialog extends BottomSheetDialogFra viewModel.getState().observe(getViewLifecycleOwner(), this::updateQuality); } + @Override + public void onResume() { + super.onResume(); + WindowUtil.initializeScreenshotSecurity(requireContext(), requireDialog().getWindow()); + } + private void updateQuality(@NonNull MediaSelectionState selectionState) { select(selectionState.getQuality() == SentMediaQuality.STANDARD ? standard : high); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/confirm/ConfirmPaymentFragment.java b/app/src/main/java/org/thoughtcrime/securesms/payments/confirm/ConfirmPaymentFragment.java index 2b9acdc058..8029e91870 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/confirm/ConfirmPaymentFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/confirm/ConfirmPaymentFragment.java @@ -45,6 +45,7 @@ import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.util.BottomSheetUtil; import org.signal.core.util.StringUtil; import org.thoughtcrime.securesms.util.ServiceUtil; +import org.thoughtcrime.securesms.util.WindowUtil; import org.thoughtcrime.securesms.util.adapter.mapping.MappingModelList; import org.thoughtcrime.securesms.util.navigation.SafeNavigation; import org.whispersystems.signalservice.api.payments.FormatterOptions; @@ -157,6 +158,12 @@ public class ConfirmPaymentFragment extends BottomSheetDialogFragment { ThreadUtil.cancelRunnableOnMain(dismiss); } + @Override + public void onResume() { + super.onResume(); + WindowUtil.initializeScreenshotSecurity(requireContext(), requireDialog().getWindow()); + } + @Override public void onPause() { super.onPause(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/proxy/ProxyBottomSheetFragment.java b/app/src/main/java/org/thoughtcrime/securesms/proxy/ProxyBottomSheetFragment.java index 6419fd6467..089fd3e659 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/proxy/ProxyBottomSheetFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/proxy/ProxyBottomSheetFragment.java @@ -22,6 +22,7 @@ import org.thoughtcrime.securesms.preferences.EditProxyViewModel; import org.thoughtcrime.securesms.util.BottomSheetUtil; import org.thoughtcrime.securesms.util.LifecycleDisposable; import org.thoughtcrime.securesms.util.ThemeUtil; +import org.thoughtcrime.securesms.util.WindowUtil; import org.thoughtcrime.securesms.util.views.CircularProgressMaterialButton; /** @@ -81,6 +82,12 @@ public final class ProxyBottomSheetFragment extends BottomSheetDialogFragment { cancelButton.setOnClickListener(v -> dismiss()); } + @Override + public void onResume() { + super.onResume(); + WindowUtil.initializeScreenshotSecurity(requireContext(), requireDialog().getWindow()); + } + private void initViewModel() { this.viewModel = new ViewModelProvider(this).get(EditProxyViewModel.class); diff --git a/app/src/main/java/org/thoughtcrime/securesms/ratelimit/RecaptchaProofBottomSheetFragment.java b/app/src/main/java/org/thoughtcrime/securesms/ratelimit/RecaptchaProofBottomSheetFragment.java index 5e9d1ce2da..a87d1eaf44 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ratelimit/RecaptchaProofBottomSheetFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ratelimit/RecaptchaProofBottomSheetFragment.java @@ -15,6 +15,7 @@ import com.google.android.material.bottomsheet.BottomSheetDialogFragment; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.util.BottomSheetUtil; +import org.thoughtcrime.securesms.util.WindowUtil; /** * A bottom sheet to be shown when we need to prompt the user to fill out a reCAPTCHA. @@ -45,6 +46,12 @@ public final class RecaptchaProofBottomSheetFragment extends BottomSheetDialogFr return view; } + @Override + public void onResume() { + super.onResume(); + WindowUtil.initializeScreenshotSecurity(requireContext(), requireDialog().getWindow()); + } + @Override public void show(@NonNull FragmentManager manager, @Nullable String tag) { Log.i(TAG, "Showing reCAPTCHA proof bottom sheet."); diff --git a/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsBottomSheetDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsBottomSheetDialogFragment.java index b1aad7e32b..6cf5b3b948 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsBottomSheetDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsBottomSheetDialogFragment.java @@ -105,6 +105,12 @@ public final class ReactionsBottomSheetDialogFragment extends BottomSheetDialogF setUpViewModel(messageId); } + @Override + public void onResume() { + super.onResume(); + WindowUtil.initializeScreenshotSecurity(requireContext(), requireDialog().getWindow()); + } + @Override public void onDismiss(@NonNull DialogInterface dialog) { super.onDismiss(dialog); diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/bottomsheet/RecipientBottomSheetDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/bottomsheet/RecipientBottomSheetDialogFragment.java index 5055587417..e7e9325447 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/bottomsheet/RecipientBottomSheetDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/bottomsheet/RecipientBottomSheetDialogFragment.java @@ -47,6 +47,7 @@ import org.thoughtcrime.securesms.util.ServiceUtil; import org.thoughtcrime.securesms.util.SpanUtil; import org.thoughtcrime.securesms.util.ThemeUtil; import org.thoughtcrime.securesms.util.Util; +import org.thoughtcrime.securesms.util.WindowUtil; import java.util.Objects; @@ -349,6 +350,12 @@ public final class RecipientBottomSheetDialogFragment extends BottomSheetDialogF callback = getParentFragment() != null && getParentFragment() instanceof Callback ? (Callback) getParentFragment() : null; } + @Override + public void onResume() { + super.onResume(); + WindowUtil.initializeScreenshotSecurity(requireContext(), requireDialog().getWindow()); + } + private void openSystemContactSheet(@NonNull Intent intent) { try { startActivityForResult(intent, REQUEST_CODE_SYSTEM_CONTACT_SHEET); diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/sharablegrouplink/GroupLinkBottomSheetDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/sharablegrouplink/GroupLinkBottomSheetDialogFragment.java index a2952dc4a1..e30cae31bc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/sharablegrouplink/GroupLinkBottomSheetDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/sharablegrouplink/GroupLinkBottomSheetDialogFragment.java @@ -26,6 +26,7 @@ import org.thoughtcrime.securesms.sharing.MultiShareArgs; import org.thoughtcrime.securesms.util.BottomSheetUtil; import org.thoughtcrime.securesms.util.ThemeUtil; import org.thoughtcrime.securesms.util.Util; +import org.thoughtcrime.securesms.util.WindowUtil; import java.util.Collections; import java.util.Objects; @@ -118,6 +119,12 @@ public final class GroupLinkBottomSheetDialogFragment extends BottomSheetDialogF return view; } + @Override + public void onResume() { + super.onResume(); + WindowUtil.initializeScreenshotSecurity(requireContext(), requireDialog().getWindow()); + } + @Override public void show(@NonNull FragmentManager manager, @Nullable String tag) { BottomSheetUtil.show(manager, tag, this); diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/WindowUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/WindowUtil.java index 6f2d60cfb1..f8b0cc62f5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/WindowUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/WindowUtil.java @@ -6,6 +6,7 @@ import android.graphics.Rect; import android.os.Build; import android.view.View; import android.view.Window; +import android.view.WindowManager; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; @@ -15,6 +16,14 @@ public final class WindowUtil { private WindowUtil() { } + public static void initializeScreenshotSecurity(@NonNull Context context, @NonNull Window window) { + if (TextSecurePreferences.isScreenSecurityEnabled(context)) { + window.addFlags(WindowManager.LayoutParams.FLAG_SECURE); + } else { + window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE); + } + } + public static void setLightNavigationBarFromTheme(@NonNull Activity activity) { if (Build.VERSION.SDK_INT < 27) return;