mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-11 18:29:05 +01:00
Target SDK 33 and ask for notification permission
when creating account and when signing in
This commit is contained in:
@@ -25,7 +25,7 @@ android {
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 31
|
||||
targetSdkVersion 33
|
||||
versionCode 10504
|
||||
versionName "1.5.4"
|
||||
applicationId "org.briarproject.briar.android"
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||
android:maxSdkVersion="18"
|
||||
tools:ignore="ScopedStorage" />
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||
|
||||
<uses-permission-sdk-23 android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<uses-permission-sdk-23 android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
||||
|
||||
@@ -19,10 +19,17 @@ import org.briarproject.nullsafety.ParametersNotNullByDefault;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import androidx.activity.result.ActivityResultLauncher;
|
||||
import androidx.activity.result.contract.ActivityResultContracts.RequestPermission;
|
||||
|
||||
import static android.Manifest.permission.POST_NOTIFICATIONS;
|
||||
import static android.content.Context.INPUT_METHOD_SERVICE;
|
||||
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
||||
import static android.os.Build.VERSION.SDK_INT;
|
||||
import static android.view.View.INVISIBLE;
|
||||
import static android.view.View.VISIBLE;
|
||||
import static android.view.inputmethod.EditorInfo.IME_ACTION_DONE;
|
||||
import static androidx.core.content.ContextCompat.checkSelfPermission;
|
||||
import static org.briarproject.bramble.api.crypto.PasswordStrengthEstimator.QUITE_WEAK;
|
||||
import static org.briarproject.briar.android.util.UiUtils.setError;
|
||||
|
||||
@@ -38,6 +45,10 @@ public class SetPasswordFragment extends SetupFragment {
|
||||
private StrengthMeter strengthMeter;
|
||||
private Button nextButton;
|
||||
|
||||
private final ActivityResultLauncher<String> requestPermissionLauncher =
|
||||
registerForActivityResult(new RequestPermission(), isGranted ->
|
||||
setPassword());
|
||||
|
||||
public static SetPasswordFragment newInstance() {
|
||||
return new SetPasswordFragment();
|
||||
}
|
||||
@@ -121,6 +132,18 @@ public class SetPasswordFragment extends SetupFragment {
|
||||
IBinder token = passwordEntry.getWindowToken();
|
||||
Object o = requireContext().getSystemService(INPUT_METHOD_SERVICE);
|
||||
((InputMethodManager) o).hideSoftInputFromWindow(token, 0);
|
||||
if (SDK_INT >= 33 &&
|
||||
checkSelfPermission(requireContext(), POST_NOTIFICATIONS) !=
|
||||
PERMISSION_GRANTED) {
|
||||
// this calls setPassword() when it returns
|
||||
requestPermissionLauncher.launch(POST_NOTIFICATIONS);
|
||||
} else {
|
||||
setPassword();
|
||||
}
|
||||
}
|
||||
|
||||
private void setPassword() {
|
||||
viewModel.setPassword(passwordEntry.getText().toString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -22,13 +22,19 @@ import org.briarproject.nullsafety.ParametersNotNullByDefault;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import androidx.activity.result.ActivityResultLauncher;
|
||||
import androidx.activity.result.contract.ActivityResultContracts.RequestPermission;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import static android.Manifest.permission.POST_NOTIFICATIONS;
|
||||
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
||||
import static android.os.Build.VERSION.SDK_INT;
|
||||
import static android.view.View.INVISIBLE;
|
||||
import static android.view.View.VISIBLE;
|
||||
import static android.view.inputmethod.EditorInfo.IME_ACTION_DONE;
|
||||
import static androidx.core.content.ContextCompat.checkSelfPermission;
|
||||
import static org.briarproject.bramble.api.crypto.DecryptionResult.KEY_STRENGTHENER_ERROR;
|
||||
import static org.briarproject.bramble.api.crypto.DecryptionResult.SUCCESS;
|
||||
import static org.briarproject.briar.android.login.LoginUtils.createKeyStrengthenerErrorDialog;
|
||||
@@ -52,6 +58,10 @@ public class PasswordFragment extends BaseFragment implements TextWatcher {
|
||||
private TextInputLayout input;
|
||||
private TextInputEditText password;
|
||||
|
||||
private final ActivityResultLauncher<String> requestPermissionLauncher =
|
||||
registerForActivityResult(new RequestPermission(), isGranted ->
|
||||
validatePassword());
|
||||
|
||||
@Override
|
||||
public void injectFragment(ActivityComponent component) {
|
||||
component.inject(this);
|
||||
@@ -109,6 +119,17 @@ public class PasswordFragment extends BaseFragment implements TextWatcher {
|
||||
hideSoftKeyboard(password);
|
||||
signInButton.setVisibility(INVISIBLE);
|
||||
progress.setVisibility(VISIBLE);
|
||||
if (SDK_INT >= 33 &&
|
||||
checkSelfPermission(requireContext(), POST_NOTIFICATIONS) !=
|
||||
PERMISSION_GRANTED) {
|
||||
// this calls validatePassword() when it returns
|
||||
requestPermissionLauncher.launch(POST_NOTIFICATIONS);
|
||||
} else {
|
||||
validatePassword();
|
||||
}
|
||||
}
|
||||
|
||||
private void validatePassword() {
|
||||
viewModel.validatePassword(password.getText().toString());
|
||||
}
|
||||
|
||||
|
||||
@@ -13,10 +13,10 @@
|
||||
android:layout_margin="@dimen/margin_medium"
|
||||
android:contentDescription="@string/info"
|
||||
android:drawablePadding="@dimen/margin_medium"
|
||||
android:drawableTint="?attr/colorControlNormal"
|
||||
android:gravity="center_vertical"
|
||||
app:drawableLeftCompat="@drawable/ic_info_dark"
|
||||
app:drawableStartCompat="@drawable/ic_info_dark"
|
||||
app:drawableTint="?attr/colorControlNormal"
|
||||
tools:text="Did you know that if you took all the veins out of your body and laid them out end to end, you would die?" />
|
||||
|
||||
</merge>
|
||||
Reference in New Issue
Block a user