From de82a780fb7b07975e9d96d56387504f1dcebc30 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 9 Jun 2022 16:20:25 +0200 Subject: [PATCH] Notification permission texts --- .../eu/faircode/email/FragmentDialogStill.java | 15 +++++++++++++-- .../java/eu/faircode/email/FragmentOptions.java | 10 ++++++++-- .../java/eu/faircode/email/FragmentSetup.java | 5 +++++ app/src/main/res/layout/dialog_setup.xml | 16 +++++++++++++--- app/src/main/res/layout/fragment_setup.xml | 14 ++++++++++++-- app/src/main/res/values/strings.xml | 2 ++ 6 files changed, 53 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogStill.java b/app/src/main/java/eu/faircode/email/FragmentDialogStill.java index 9eb58518b4..5ef927b37d 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogStill.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogStill.java @@ -27,6 +27,7 @@ import android.content.DialogInterface; import android.content.SharedPreferences; import android.graphics.Paint; import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -46,6 +47,8 @@ public class FragmentDialogStill extends FragmentDialogBase { public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { final Context context = getContext(); View dview = LayoutInflater.from(context).inflate(R.layout.dialog_setup, null); + TextView tvContactPermissions = dview.findViewById(R.id.tvContactPermissions); + TextView tvNotificationPermissions = dview.findViewById(R.id.tvNotificationPermissions); TextView tvDozeDevice = dview.findViewById(R.id.tvDozeDevice); TextView tvDozeAndroid12 = dview.findViewById(R.id.tvDozeAndroid12); CheckBox cbNotAgain = dview.findViewById(R.id.cbNotAgain); @@ -68,14 +71,22 @@ public class FragmentDialogStill extends FragmentDialogBase { } }); - boolean hasPermissions = Helper.hasPermission(context, Manifest.permission.READ_CONTACTS); + boolean hasContactPermissions = + Helper.hasPermission(context, Manifest.permission.READ_CONTACTS); + boolean hasNotificationPermissions = + (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU || + Helper.hasPermission(context, Manifest.permission.POST_NOTIFICATIONS)); boolean isIgnoring = !Boolean.FALSE.equals(Helper.isIgnoringOptimizations(context)); boolean canScheduleExact = AlarmManagerCompatEx.canScheduleExactAlarms(getContext()); + tvContactPermissions.setVisibility(hasContactPermissions ? View.GONE : View.VISIBLE); + tvNotificationPermissions.setVisibility(hasNotificationPermissions ? View.GONE : View.VISIBLE); tvDozeDevice.setVisibility(Helper.isKilling() && !isIgnoring ? View.VISIBLE : View.GONE); tvDozeAndroid12.setVisibility(!canScheduleExact && !isIgnoring ? View.VISIBLE : View.GONE); - grp2.setVisibility(hasPermissions ? View.GONE : View.VISIBLE); + grp2.setVisibility( + hasContactPermissions && hasNotificationPermissions + ? View.GONE : View.VISIBLE); grp3.setVisibility(isIgnoring ? View.GONE : View.VISIBLE); AlertDialog.Builder builder = new AlertDialog.Builder(context) diff --git a/app/src/main/java/eu/faircode/email/FragmentOptions.java b/app/src/main/java/eu/faircode/email/FragmentOptions.java index e9b51e1ef7..7200103eb9 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptions.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptions.java @@ -29,6 +29,7 @@ import android.database.Cursor; import android.database.MatrixCursor; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; +import android.os.Build; import android.os.Bundle; import android.text.SpannableStringBuilder; import android.text.TextUtils; @@ -486,10 +487,15 @@ public class FragmentOptions extends FragmentBase { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); boolean setup_reminder = prefs.getBoolean("setup_reminder", true); - boolean hasPermissions = hasPermission(Manifest.permission.READ_CONTACTS); + boolean hasContactPermissions = + hasPermission(Manifest.permission.READ_CONTACTS); + boolean hasNotificationPermissions = + (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU || + hasPermission(Manifest.permission.POST_NOTIFICATIONS)); boolean isIgnoring = !Boolean.FALSE.equals(Helper.isIgnoringOptimizations(getContext())); - if (!setup_reminder || (hasPermissions && isIgnoring)) + if (!setup_reminder || + (hasContactPermissions && hasNotificationPermissions && isIgnoring)) super.finish(); else { FragmentDialogStill fragment = new FragmentDialogStill(); diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java index 5971adc6b4..a3a18117d2 100644 --- a/app/src/main/java/eu/faircode/email/FragmentSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java @@ -99,6 +99,7 @@ public class FragmentSetup extends FragmentBase { private TextView tvFree; private TextView tvNoComposable; + private TextView tvNotificationPermissions; private TextView tvPermissionsDone; private Button btnPermissions; private TextView tvPermissionsWhy; @@ -176,6 +177,7 @@ public class FragmentSetup extends FragmentBase { tvFree = view.findViewById(R.id.tvFree); tvNoComposable = view.findViewById(R.id.tvNoComposable); + tvNotificationPermissions = view.findViewById(R.id.tvNotificationPermissions); tvPermissionsDone = view.findViewById(R.id.tvPermissionsDone); btnPermissions = view.findViewById(R.id.btnPermissions); tvPermissionsWhy = view.findViewById(R.id.tvPermissionsWhy); @@ -685,6 +687,9 @@ public class FragmentSetup extends FragmentBase { btnIdentity.setEnabled(false); tvNoComposable.setVisibility(View.GONE); + tvNotificationPermissions.setVisibility( + Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU + ? View.GONE : View.VISIBLE); tvPermissionsDone.setText(null); tvPermissionsDone.setCompoundDrawables(null, null, null, null); diff --git a/app/src/main/res/layout/dialog_setup.xml b/app/src/main/res/layout/dialog_setup.xml index 0bce1e32b5..e3d6dd6171 100644 --- a/app/src/main/res/layout/dialog_setup.xml +++ b/app/src/main/res/layout/dialog_setup.xml @@ -46,7 +46,7 @@ app:layout_constraintTop_toTopOf="@id/two" /> + + + app:constraint_referenced_ids="two,title2" /> + + + app:layout_constraintTop_toBottomOf="@id/tvNotificationPermissions" /> Grant permissions To access contact information (optional) Contact permissions are required to look up contact info and to suggest contacts + To show new messages notifications (optional) + Notification permissions are required to display new message status bar notifications Which permissions are needed and why? How can I import contacts? Disable battery optimizations