diff --git a/briar-android/src/org/briarproject/android/BriarActivity.java b/briar-android/src/org/briarproject/android/BriarActivity.java index 6dcf3e1b7211e9d6dda1997e31275908974048e0..6253089ade8ac8dd496537e6bd5e9a1fc5d4cb28 100644 --- a/briar-android/src/org/briarproject/android/BriarActivity.java +++ b/briar-android/src/org/briarproject/android/BriarActivity.java @@ -4,6 +4,7 @@ import static android.content.Intent.FLAG_ACTIVITY_NO_ANIMATION; import static android.content.Intent.FLAG_ACTIVITY_SINGLE_TOP; import static android.view.WindowManager.LayoutParams.FLAG_SECURE; import static android.view.inputmethod.InputMethodManager.HIDE_IMPLICIT_ONLY; +import static org.briarproject.android.TestingConstants.PREVENT_SCREENSHOTS; import java.util.concurrent.Executor; import java.util.logging.Logger; @@ -42,7 +43,7 @@ public class BriarActivity extends RoboActivity { @Override public void onCreate(Bundle state) { super.onCreate(state); - getWindow().setFlags(FLAG_SECURE, FLAG_SECURE); + if(PREVENT_SCREENSHOTS) getWindow().addFlags(FLAG_SECURE); if(databaseConfig.getEncryptionKey() != null) startAndBindService(); } diff --git a/briar-android/src/org/briarproject/android/ExpiredActivity.java b/briar-android/src/org/briarproject/android/ExpiredActivity.java index 042d894b27234b0efbc177bf24c15f89bb857330..d61f22646bb6829d497d1994a0e14ce0a03f2bfd 100644 --- a/briar-android/src/org/briarproject/android/ExpiredActivity.java +++ b/briar-android/src/org/briarproject/android/ExpiredActivity.java @@ -2,6 +2,7 @@ package org.briarproject.android; import static android.view.Gravity.CENTER; import static android.view.WindowManager.LayoutParams.FLAG_SECURE; +import static org.briarproject.android.TestingConstants.PREVENT_SCREENSHOTS; import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH; import org.briarproject.R; @@ -18,7 +19,7 @@ public class ExpiredActivity extends Activity { public void onCreate(Bundle state) { super.onCreate(state); - getWindow().setFlags(FLAG_SECURE, FLAG_SECURE); + if(PREVENT_SCREENSHOTS) getWindow().addFlags(FLAG_SECURE); LinearLayout layout = new LinearLayout(this); layout.setLayoutParams(MATCH_MATCH); diff --git a/briar-android/src/org/briarproject/android/PasswordActivity.java b/briar-android/src/org/briarproject/android/PasswordActivity.java index 68fce1d5477bd3991899abfe15a697cbc009dd18..26ac3dee0938710792bb9389d3081c3cabc0c4c0 100644 --- a/briar-android/src/org/briarproject/android/PasswordActivity.java +++ b/briar-android/src/org/briarproject/android/PasswordActivity.java @@ -9,6 +9,7 @@ import static android.view.View.VISIBLE; import static android.view.WindowManager.LayoutParams.FLAG_SECURE; import static android.view.inputmethod.InputMethodManager.HIDE_IMPLICIT_ONLY; import static android.widget.LinearLayout.VERTICAL; +import static org.briarproject.android.TestingConstants.PREVENT_SCREENSHOTS; import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH; import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP; @@ -56,7 +57,7 @@ public class PasswordActivity extends RoboActivity { public void onCreate(Bundle state) { super.onCreate(state); - getWindow().setFlags(FLAG_SECURE, FLAG_SECURE); + if(PREVENT_SCREENSHOTS) getWindow().addFlags(FLAG_SECURE); SharedPreferences prefs = getSharedPreferences("db", MODE_PRIVATE); String hex = prefs.getString("key", null); diff --git a/briar-android/src/org/briarproject/android/SettingsActivity.java b/briar-android/src/org/briarproject/android/SettingsActivity.java index 68f9594aa2d7c175bb62e117be9f5e4d2ca6c776..02aca849d39dff7f461aa1b32a1cbc555ffd1b56 100644 --- a/briar-android/src/org/briarproject/android/SettingsActivity.java +++ b/briar-android/src/org/briarproject/android/SettingsActivity.java @@ -7,6 +7,7 @@ import static android.view.View.VISIBLE; import static android.widget.LinearLayout.VERTICAL; import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; +import static org.briarproject.android.TestingConstants.SHOW_TESTING_ACTIVITY; import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP; import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP_1; @@ -168,16 +169,18 @@ OnClickListener { layout.addView(new HorizontalBorder(this)); - LinearLayout footer = new LinearLayout(this); - footer.setLayoutParams(MATCH_WRAP); - footer.setGravity(CENTER); - footer.setBackgroundColor(res.getColor(R.color.button_bar_background)); - testingButton = new ImageButton(this); - testingButton.setBackgroundResource(0); - testingButton.setImageResource(R.drawable.action_about); - testingButton.setOnClickListener(this); - footer.addView(testingButton); - layout.addView(footer); + if(SHOW_TESTING_ACTIVITY) { + LinearLayout footer = new LinearLayout(this); + footer.setLayoutParams(MATCH_WRAP); + footer.setGravity(CENTER); + footer.setBackgroundColor(res.getColor(R.color.button_bar_background)); + testingButton = new ImageButton(this); + testingButton.setBackgroundResource(0); + testingButton.setImageResource(R.drawable.action_about); + testingButton.setOnClickListener(this); + footer.addView(testingButton); + layout.addView(footer); + } setContentView(layout); } @@ -246,7 +249,7 @@ OnClickListener { } public void onClick(View view) { - if(testingButton == null) return; // Not created yet + if(progress == null) return; // Not created yet if(view == testingButton) { startActivity(new Intent(this, TestingActivity.class)); return; diff --git a/briar-android/src/org/briarproject/android/SetupActivity.java b/briar-android/src/org/briarproject/android/SetupActivity.java index 69ab300a00e9c4318134960ff19136b916f0fe23..b4d635cd1ce152175c6d375ca4d54bb41415bd59 100644 --- a/briar-android/src/org/briarproject/android/SetupActivity.java +++ b/briar-android/src/org/briarproject/android/SetupActivity.java @@ -12,6 +12,7 @@ import static android.view.View.VISIBLE; import static android.view.WindowManager.LayoutParams.FLAG_SECURE; import static android.widget.LinearLayout.VERTICAL; import static java.util.logging.Level.INFO; +import static org.briarproject.android.TestingConstants.PREVENT_SCREENSHOTS; import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH; import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP; import static org.briarproject.api.AuthorConstants.MAX_AUTHOR_NAME_LENGTH; @@ -75,7 +76,7 @@ public class SetupActivity extends RoboActivity implements OnClickListener { public void onCreate(Bundle state) { super.onCreate(state); - getWindow().setFlags(FLAG_SECURE, FLAG_SECURE); + if(PREVENT_SCREENSHOTS) getWindow().addFlags(FLAG_SECURE); LinearLayout layout = new LinearLayout(this); layout.setLayoutParams(MATCH_MATCH); diff --git a/briar-android/src/org/briarproject/android/SplashScreenActivity.java b/briar-android/src/org/briarproject/android/SplashScreenActivity.java index a71774e40f4c0644433d34f27352ef9776b31681..72bdabcc115460946d53ae4de80f53e7963458a8 100644 --- a/briar-android/src/org/briarproject/android/SplashScreenActivity.java +++ b/briar-android/src/org/briarproject/android/SplashScreenActivity.java @@ -3,10 +3,11 @@ package org.briarproject.android; import static android.view.Gravity.CENTER; import static android.view.WindowManager.LayoutParams.FLAG_SECURE; import static java.util.logging.Level.INFO; +import static org.briarproject.android.TestingConstants.DEFAULT_LOG_LEVEL; +import static org.briarproject.android.TestingConstants.PREVENT_SCREENSHOTS; import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH; import java.io.File; -import java.util.logging.Level; import java.util.logging.Logger; import org.briarproject.R; @@ -31,8 +32,6 @@ public class SplashScreenActivity extends RoboSplashActivity { // This build expires on 10 May 2014 private static final long EXPIRY_DATE = 1399680000 * 1000L; - // Default log level - change this to OFF for release builds - private static final Level DEFAULT_LOG_LEVEL = INFO; private long now = System.currentTimeMillis(); @@ -45,7 +44,7 @@ public class SplashScreenActivity extends RoboSplashActivity { public void onCreate(Bundle state) { super.onCreate(state); - getWindow().setFlags(FLAG_SECURE, FLAG_SECURE); + if(PREVENT_SCREENSHOTS) getWindow().addFlags(FLAG_SECURE); LinearLayout layout = new LinearLayout(this); layout.setLayoutParams(MATCH_MATCH); diff --git a/briar-android/src/org/briarproject/android/TestingConstants.java b/briar-android/src/org/briarproject/android/TestingConstants.java new file mode 100644 index 0000000000000000000000000000000000000000..4d053d32c9b2cd48f8a5ef75c481c8b51435e9b5 --- /dev/null +++ b/briar-android/src/org/briarproject/android/TestingConstants.java @@ -0,0 +1,25 @@ +package org.briarproject.android; + +import static java.util.logging.Level.INFO; + +import java.util.logging.Level; + +interface TestingConstants { + + /** Default log level - this should be OFF for release builds. */ + Level DEFAULT_LOG_LEVEL = INFO; + + /** + * Whether to prevent screenshots from being taken. This should be true for + * release builds, to prevent Recent Apps from storing screenshots of + * private information. Unfortunately this also prevents the user from + * taking screenshots intentionally. + */ + boolean PREVENT_SCREENSHOTS = false; + + /** + * Whether to allow TestingActivity to be launched from SettingsActivity. + * This should be false for release builds. + */ + boolean SHOW_TESTING_ACTIVITY = true; +}