diff --git a/app/src/org/commcare/activities/CommCareActivity.java b/app/src/org/commcare/activities/CommCareActivity.java index bd38fccdf7..f6de4e1c34 100755 --- a/app/src/org/commcare/activities/CommCareActivity.java +++ b/app/src/org/commcare/activities/CommCareActivity.java @@ -1,5 +1,7 @@ package org.commcare.activities; +import static org.commcare.preferences.HiddenPreferences.isFlagSecureEnabled; + import android.annotation.TargetApi; import android.content.Context; import android.content.DialogInterface; @@ -18,6 +20,7 @@ import android.view.MotionEvent; import android.view.View; import android.view.ViewTreeObserver; +import android.view.WindowManager; import android.widget.TextView; import android.widget.Toast; @@ -127,6 +130,10 @@ public abstract class CommCareActivity extends AppCompatActivity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + if (isFlagSecureEnabled()) { + getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); + } + FragmentManager fm = this.getSupportFragmentManager(); stateHolder = (TaskConnectorFragment)fm.findFragmentByTag("state"); diff --git a/app/src/org/commcare/preferences/HiddenPreferences.java b/app/src/org/commcare/preferences/HiddenPreferences.java index afe69e8a88..134ee59458 100644 --- a/app/src/org/commcare/preferences/HiddenPreferences.java +++ b/app/src/org/commcare/preferences/HiddenPreferences.java @@ -2,7 +2,6 @@ import android.content.SharedPreferences; -import org.commcare.AppUtils; import org.commcare.CommCareApp; import org.commcare.CommCareApplication; import org.commcare.activities.GeoPointActivity; @@ -95,9 +94,13 @@ public class HiddenPreferences { private static final String DISABLE_BACKGROUND_WORK_TIME = "disable-background-work-time"; private static final long NO_OF_HOURS_TO_WAIT_TO_RESUME_BACKGROUND_WORK = 36; + // This is to be used by CommCareFirebaseMessagingService to schedule a sync after the next Login public final static String PENDING_SYNC_REQUEST_FROM_SERVER = "pending-sync-request-from-server"; + private static final String ENABLE_ANDROID_WINDOW_SECURE_FLAG = "cc-enable-android-window-secure-flag"; + + /** * @return How many seconds should a user session remain open before expiring? @@ -562,4 +565,8 @@ public static void setPendingSyncRequestFromServer(boolean syncNeeded) { .putBoolean(PENDING_SYNC_REQUEST_FROM_SERVER, syncNeeded) .apply(); } + + public static boolean isFlagSecureEnabled() { + return DeveloperPreferences.doesPropertyMatch(ENABLE_ANDROID_WINDOW_SECURE_FLAG, PrefValues.NO, PrefValues.YES); + } }