diff --git a/bramble-android/src/main/java/org/briarproject/bramble/util/AndroidUtils.java b/bramble-android/src/main/java/org/briarproject/bramble/util/AndroidUtils.java index 5fe56cd5c..bde4b9a23 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/util/AndroidUtils.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/util/AndroidUtils.java @@ -10,17 +10,20 @@ import org.briarproject.bramble.api.Pair; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import java.io.File; +import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Scanner; import javax.annotation.Nullable; import static android.content.Context.MODE_PRIVATE; import static android.os.Build.VERSION.SDK_INT; +import static java.lang.Runtime.getRuntime; import static java.util.Arrays.asList; import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull; @@ -118,4 +121,17 @@ public class AndroidUtils { public static String[] getSupportedImageContentTypes() { return new String[] {"image/jpeg", "image/png", "image/gif"}; } + + @Nullable + public static String getSystemProperty(String propName) { + try { + Process p = getRuntime().exec("getprop " + propName); + Scanner s = new Scanner(p.getInputStream()); + String line = s.nextLine(); + s.close(); + return line; + } catch (SecurityException | IOException e) { + return null; + } + } } diff --git a/briar-android/src/main/AndroidManifest.xml b/briar-android/src/main/AndroidManifest.xml index feeec1655..1eac6796d 100644 --- a/briar-android/src/main/AndroidManifest.xml +++ b/briar-android/src/main/AndroidManifest.xml @@ -104,8 +104,7 @@ + android:label="@string/setup_title" /> = 10; + } catch (NumberFormatException e) { + return false; + } + } +} diff --git a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java index e89b07100..aa77231d7 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java @@ -2,6 +2,7 @@ package org.briarproject.briar.android.util; import android.annotation.SuppressLint; import android.annotation.TargetApi; +import android.app.Activity; import android.app.KeyguardManager; import android.content.ActivityNotFoundException; import android.content.Context; @@ -90,6 +91,9 @@ import static android.text.format.DateUtils.WEEK_IN_MILLIS; import static android.text.format.DateUtils.YEAR_IN_MILLIS; import static android.view.KeyEvent.ACTION_DOWN; import static android.view.KeyEvent.KEYCODE_ENTER; +import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; +import static android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE; +import static android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN; import static android.view.inputmethod.EditorInfo.IME_NULL; import static android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT; import static android.widget.Toast.LENGTH_LONG; @@ -537,4 +541,14 @@ public class UiUtils { Toast.makeText(context, msg, LENGTH_LONG).show(); }); } + + public static void setInputStateAlwaysVisible(Activity activity) { + activity.getWindow().setSoftInputMode(SOFT_INPUT_ADJUST_RESIZE | + SOFT_INPUT_STATE_ALWAYS_VISIBLE); + } + + public static void setInputStateHidden(Activity activity) { + activity.getWindow().setSoftInputMode(SOFT_INPUT_ADJUST_RESIZE | + SOFT_INPUT_STATE_HIDDEN); + } } diff --git a/briar-android/src/main/res/layout/fragment_setup_doze.xml b/briar-android/src/main/res/layout/fragment_setup_doze.xml index 8571fde69..e32cf10b0 100644 --- a/briar-android/src/main/res/layout/fragment_setup_doze.xml +++ b/briar-android/src/main/res/layout/fragment_setup_doze.xml @@ -38,6 +38,15 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/huaweiProtectedAppsView" /> + +