diff --git a/briar-android/build.gradle b/briar-android/build.gradle index 2d020aeae..bc40fdc7a 100644 --- a/briar-android/build.gradle +++ b/briar-android/build.gradle @@ -100,7 +100,7 @@ dependencies { implementation project(path: ':briar-core', configuration: 'default') implementation project(path: ':bramble-core', configuration: 'default') implementation project(':bramble-android') - implementation 'org.briarproject:dont-kill-me-lib:0.2.2' + implementation 'org.briarproject:dont-kill-me-lib:0.2.5' implementation 'androidx.fragment:fragment:1.3.4' implementation 'androidx.preference:preference:1.1.1' diff --git a/briar-android/src/main/AndroidManifest.xml b/briar-android/src/main/AndroidManifest.xml index 822717f27..984dab9c2 100644 --- a/briar-android/src/main/AndroidManifest.xml +++ b/briar-android/src/main/AndroidManifest.xml @@ -496,6 +496,7 @@ + diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/DozeFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/account/DozeFragment.java index 86ec70bfb..cec359705 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/account/DozeFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/account/DozeFragment.java @@ -32,7 +32,8 @@ public class DozeFragment extends SetupFragment private DozeView dozeView; private HuaweiProtectedAppsView huaweiProtectedAppsView; private HuaweiAppLaunchView huaweiAppLaunchView; - private XiaomiView xiaomiView; + private XiaomiRecentAppsView xiaomiRecentAppsView; + private XiaomiLockAppsView xiaomiLockAppsView; private Button next; private boolean secondAttempt = false; @@ -54,8 +55,10 @@ public class DozeFragment extends SetupFragment huaweiProtectedAppsView.setOnCheckedChangedListener(this); huaweiAppLaunchView = v.findViewById(R.id.huaweiAppLaunchView); huaweiAppLaunchView.setOnCheckedChangedListener(this); - xiaomiView = v.findViewById(R.id.xiaomiView); - xiaomiView.setOnCheckedChangedListener(this); + xiaomiRecentAppsView = v.findViewById(R.id.xiaomiRecentAppsView); + xiaomiRecentAppsView.setOnCheckedChangedListener(this); + xiaomiLockAppsView = v.findViewById(R.id.xiaomiLockAppsView); + xiaomiLockAppsView.setOnCheckedChangedListener(this); next = v.findViewById(R.id.next); ProgressBar progressBar = v.findViewById(R.id.progress); @@ -102,7 +105,8 @@ public class DozeFragment extends SetupFragment next.setEnabled(dozeView.isChecked() && huaweiProtectedAppsView.isChecked() && huaweiAppLaunchView.isChecked() && - xiaomiView.isChecked()); + xiaomiRecentAppsView.isChecked() && + xiaomiLockAppsView.isChecked()); } @SuppressLint("BatteryLife") diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/DozeView.java b/briar-android/src/main/java/org/briarproject/briar/android/account/DozeView.java index e4978bfd8..0d59345c7 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/account/DozeView.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/account/DozeView.java @@ -50,7 +50,7 @@ class DozeView extends PowerView { onButtonClickListener.run(); } - public void setOnButtonClickListener(Runnable runnable) { + void setOnButtonClickListener(Runnable runnable) { onButtonClickListener = runnable; } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/XiaomiLockAppsView.java b/briar-android/src/main/java/org/briarproject/briar/android/account/XiaomiLockAppsView.java new file mode 100644 index 000000000..84cfd1cd9 --- /dev/null +++ b/briar-android/src/main/java/org/briarproject/briar/android/account/XiaomiLockAppsView.java @@ -0,0 +1,72 @@ +package org.briarproject.briar.android.account; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.Toast; + +import org.briarproject.bramble.api.nullsafety.NotNullByDefault; +import org.briarproject.briar.R; + +import java.util.logging.Logger; + +import javax.annotation.Nullable; + +import androidx.annotation.StringRes; +import androidx.annotation.UiThread; + +import static android.widget.Toast.LENGTH_LONG; +import static java.util.logging.Level.WARNING; +import static java.util.logging.Logger.getLogger; +import static org.briarproject.android.dontkillmelib.XiaomiUtils.getXiaomiLockAppsIntent; +import static org.briarproject.android.dontkillmelib.XiaomiUtils.xiaomiLockAppsNeedsToBeShown; +import static org.briarproject.bramble.util.LogUtils.logException; + +@UiThread +@NotNullByDefault +class XiaomiLockAppsView extends PowerView { + + private static final Logger LOG = + getLogger(XiaomiLockAppsView.class.getName()); + + public XiaomiLockAppsView(Context context) { + this(context, null); + } + + public XiaomiLockAppsView(Context context, @Nullable AttributeSet attrs) { + this(context, attrs, 0); + } + + public XiaomiLockAppsView(Context context, @Nullable AttributeSet attrs, + int defStyleAttr) { + super(context, attrs, defStyleAttr); + setText(R.string.dnkm_xiaomi_lock_apps_text); + setButtonText(R.string.dnkm_xiaomi_lock_apps_button); + } + + @Override + public boolean needsToBeShown() { + return xiaomiLockAppsNeedsToBeShown(getContext()); + } + + @Override + @StringRes + protected int getHelpText() { + return R.string.dnkm_xiaomi_lock_apps_help; + } + + @Override + protected void onButtonClick() { + try { + getContext().startActivity(getXiaomiLockAppsIntent()); + setChecked(true); + return; + } catch (SecurityException e) { + logException(LOG, WARNING, e); + } + Toast.makeText(getContext(), + R.string.dnkm_xiaomi_lock_apps_error_toast, + LENGTH_LONG).show(); + // Let the user continue with setup + setChecked(true); + } +} diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/XiaomiView.java b/briar-android/src/main/java/org/briarproject/briar/android/account/XiaomiRecentAppsView.java similarity index 74% rename from briar-android/src/main/java/org/briarproject/briar/android/account/XiaomiView.java rename to briar-android/src/main/java/org/briarproject/briar/android/account/XiaomiRecentAppsView.java index 453896b73..0efef138f 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/account/XiaomiView.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/account/XiaomiRecentAppsView.java @@ -1,6 +1,5 @@ package org.briarproject.briar.android.account; - import android.content.Context; import android.util.AttributeSet; @@ -12,23 +11,23 @@ import javax.annotation.Nullable; import androidx.annotation.StringRes; import androidx.annotation.UiThread; -import static org.briarproject.android.dontkillmelib.XiaomiUtils.isMiuiTenOrLater; -import static org.briarproject.android.dontkillmelib.XiaomiUtils.isXiaomiOrRedmiDevice; +import static org.briarproject.android.dontkillmelib.XiaomiUtils.isMiuiVersionAtLeast; +import static org.briarproject.android.dontkillmelib.XiaomiUtils.xiaomiRecentAppsNeedsToBeShown; import static org.briarproject.briar.android.util.UiUtils.showOnboardingDialog; @UiThread @NotNullByDefault -class XiaomiView extends PowerView { +class XiaomiRecentAppsView extends PowerView { - public XiaomiView(Context context) { + public XiaomiRecentAppsView(Context context) { this(context, null); } - public XiaomiView(Context context, @Nullable AttributeSet attrs) { + public XiaomiRecentAppsView(Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0); } - public XiaomiView(Context context, @Nullable AttributeSet attrs, + public XiaomiRecentAppsView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); setText(R.string.dnkm_xiaomi_text); @@ -37,7 +36,7 @@ class XiaomiView extends PowerView { @Override public boolean needsToBeShown() { - return isXiaomiOrRedmiDevice(); + return xiaomiRecentAppsNeedsToBeShown(); } @Override @@ -48,7 +47,7 @@ class XiaomiView extends PowerView { @Override protected void onButtonClick() { - int bodyRes = isMiuiTenOrLater() + int bodyRes = isMiuiVersionAtLeast(10, 0) ? R.string.dnkm_xiaomi_dialog_body_new : R.string.dnkm_xiaomi_dialog_body_old; showOnboardingDialog(getContext(), getContext().getString(bodyRes)); 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 e32cf10b0..5a94c3592 100644 --- a/briar-android/src/main/res/layout/fragment_setup_doze.xml +++ b/briar-android/src/main/res/layout/fragment_setup_doze.xml @@ -38,8 +38,8 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/huaweiProtectedAppsView" /> - + +