Added check for background restrictions

pull/197/head
M66B 5 years ago
parent 8bd685eab8
commit 5d0f1c17b2

@ -20,6 +20,7 @@ package eu.faircode.email;
*/ */
import android.Manifest; import android.Manifest;
import android.app.ActivityManager;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
@ -81,14 +82,17 @@ public class FragmentSetup extends FragmentBase {
private TextView tvDozeDone; private TextView tvDozeDone;
private Button btnDoze; private Button btnDoze;
private TextView tvBatteryUsage;
private TextView tvSyncStopped;
private Button btnBackgroundRestricted;
private Button btnDataSaver; private Button btnDataSaver;
private TextView tvBatteryUsage;
private TextView tvSyncStopped;
private Button btnInbox; private Button btnInbox;
private Group grpManual; private Group grpManual;
private Group grpBackgroundRestricted;
private Group grpDataSaver; private Group grpDataSaver;
private int textColorPrimary; private int textColorPrimary;
@ -143,14 +147,17 @@ public class FragmentSetup extends FragmentBase {
tvDozeDone = view.findViewById(R.id.tvDozeDone); tvDozeDone = view.findViewById(R.id.tvDozeDone);
btnDoze = view.findViewById(R.id.btnDoze); btnDoze = view.findViewById(R.id.btnDoze);
tvBatteryUsage = view.findViewById(R.id.tvBatteryUsage);
tvSyncStopped = view.findViewById(R.id.tvSyncStopped);
btnBackgroundRestricted = view.findViewById(R.id.btnBackgroundRestricted);
btnDataSaver = view.findViewById(R.id.btnDataSaver); btnDataSaver = view.findViewById(R.id.btnDataSaver);
tvBatteryUsage = view.findViewById(R.id.tvBatteryUsage);
tvSyncStopped = view.findViewById(R.id.tvSyncStopped);
btnInbox = view.findViewById(R.id.btnInbox); btnInbox = view.findViewById(R.id.btnInbox);
grpManual = view.findViewById(R.id.grpManual); grpManual = view.findViewById(R.id.grpManual);
grpBackgroundRestricted = view.findViewById(R.id.grpBackgroundRestricted);
grpDataSaver = view.findViewById(R.id.grpDataSaver); grpDataSaver = view.findViewById(R.id.grpDataSaver);
// Wire controls // Wire controls
@ -329,20 +336,34 @@ public class FragmentSetup extends FragmentBase {
} }
}); });
PackageManager pm = getContext().getPackageManager();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
final Intent settings = new Intent(
Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.parse("package:" + BuildConfig.APPLICATION_ID));
btnBackgroundRestricted.setEnabled(settings.resolveActivity(pm) != null); // system whitelisted
btnBackgroundRestricted.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(settings);
}
});
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
final Intent settings = new Intent( final Intent settings = new Intent(
Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS, Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS,
Uri.parse("package:" + BuildConfig.APPLICATION_ID)); Uri.parse("package:" + BuildConfig.APPLICATION_ID));
btnDataSaver.setEnabled(settings.resolveActivity(pm) != null); // system whitelisted
btnDataSaver.setOnClickListener(new View.OnClickListener() { btnDataSaver.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
startActivity(settings); startActivity(settings);
} }
}); });
PackageManager pm = getContext().getPackageManager();
btnDataSaver.setEnabled(settings.resolveActivity(pm) != null); // system whitelisted
} }
btnInbox.setOnClickListener(new View.OnClickListener() { btnInbox.setOnClickListener(new View.OnClickListener() {
@ -365,6 +386,7 @@ public class FragmentSetup extends FragmentBase {
btnInbox.setEnabled(false); btnInbox.setEnabled(false);
grpBackgroundRestricted.setVisibility(View.GONE);
grpDataSaver.setVisibility(View.GONE); grpDataSaver.setVisibility(View.GONE);
setContactsPermission(hasPermission(Manifest.permission.READ_CONTACTS)); setContactsPermission(hasPermission(Manifest.permission.READ_CONTACTS));
@ -462,6 +484,11 @@ public class FragmentSetup extends FragmentBase {
tvDozeDone.setTypeface(null, ignoring ? Typeface.NORMAL : Typeface.BOLD); tvDozeDone.setTypeface(null, ignoring ? Typeface.NORMAL : Typeface.BOLD);
tvDozeDone.setCompoundDrawablesWithIntrinsicBounds(ignoring ? check : null, null, null, null); tvDozeDone.setCompoundDrawablesWithIntrinsicBounds(ignoring ? check : null, null, null, null);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
ActivityManager am = (ActivityManager) getContext().getSystemService(Context.ACTIVITY_SERVICE);
grpBackgroundRestricted.setVisibility(am.isBackgroundRestricted() ? View.VISIBLE : View.GONE);
}
// https://developer.android.com/training/basics/network-ops/data-saver.html // https://developer.android.com/training/basics/network-ops/data-saver.html
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
ConnectivityManager cm = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE); ConnectivityManager cm = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);

@ -1569,6 +1569,9 @@ public class Log {
sb.append(String.format("Standby bucket: %d\r\n", bucket)); sb.append(String.format("Standby bucket: %d\r\n", bucket));
} }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P)
sb.append(String.format("Background restricted: %b\r\n", am.isBackgroundRestricted()));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
boolean saving = (cm.getRestrictBackgroundStatus() == ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED); boolean saving = (cm.getRestrictBackgroundStatus() == ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED);

@ -450,32 +450,25 @@
app:layout_constraintTop_toBottomOf="@id/btnDoze" /> app:layout_constraintTop_toBottomOf="@id/btnDoze" />
<eu.faircode.email.FixedTextView <eu.faircode.email.FixedTextView
android:id="@+id/tvBatteryUsage" android:id="@+id/tvBackgroundRestricted"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
android:drawableEnd="@drawable/twotone_open_in_new_12" android:text="@string/title_setup_background"
android:drawablePadding="6dp"
android:drawableTint="?android:attr/textColorLink"
android:text="@string/title_setup_doze_battery"
android:textAppearance="@style/TextAppearance.AppCompat.Small" android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="?android:attr/textColorLink" android:textColor="?attr/colorWarning"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvDozeHint" /> app:layout_constraintTop_toBottomOf="@id/tvDozeHint" />
<eu.faircode.email.FixedTextView <Button
android:id="@+id/tvSyncStopped" android:id="@+id/btnBackgroundRestricted"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="12dp" android:text="@string/title_setup_manage"
android:drawableEnd="@drawable/twotone_open_in_new_12"
android:drawablePadding="6dp"
android:drawableTint="?android:attr/textColorLink"
android:text="@string/title_setup_doze_stopped"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="?android:attr/textColorLink"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvBatteryUsage" /> app:layout_constraintTop_toBottomOf="@id/tvBackgroundRestricted" />
<eu.faircode.email.FixedTextView <eu.faircode.email.FixedTextView
android:id="@+id/tvDataSaver" android:id="@+id/tvDataSaver"
@ -485,8 +478,9 @@
android:text="@string/title_setup_data" android:text="@string/title_setup_data"
android:textAppearance="@style/TextAppearance.AppCompat.Small" android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="?attr/colorWarning" android:textColor="?attr/colorWarning"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvSyncStopped" /> app:layout_constraintTop_toBottomOf="@id/btnBackgroundRestricted" />
<Button <Button
android:id="@+id/btnDataSaver" android:id="@+id/btnDataSaver"
@ -497,6 +491,34 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvDataSaver" /> app:layout_constraintTop_toBottomOf="@id/tvDataSaver" />
<eu.faircode.email.FixedTextView
android:id="@+id/tvBatteryUsage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:drawableEnd="@drawable/twotone_open_in_new_12"
android:drawablePadding="6dp"
android:drawableTint="?android:attr/textColorLink"
android:text="@string/title_setup_doze_battery"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="?android:attr/textColorLink"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnDataSaver" />
<eu.faircode.email.FixedTextView
android:id="@+id/tvSyncStopped"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:drawableEnd="@drawable/twotone_open_in_new_12"
android:drawablePadding="6dp"
android:drawableTint="?android:attr/textColorLink"
android:text="@string/title_setup_doze_stopped"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="?android:attr/textColorLink"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvBatteryUsage" />
<androidx.constraintlayout.widget.Group <androidx.constraintlayout.widget.Group
android:id="@+id/grpManual" android:id="@+id/grpManual"
android:layout_width="0dp" android:layout_width="0dp"
@ -506,6 +528,12 @@
btnIdentity,tvIdentity,tvSmtp,tvAliases, btnIdentity,tvIdentity,tvSmtp,tvAliases,
tvAccountIdentity,tvExchangeSupport,tvIdentityWhat" /> tvAccountIdentity,tvExchangeSupport,tvIdentityWhat" />
<androidx.constraintlayout.widget.Group
android:id="@+id/grpBackgroundRestricted"
android:layout_width="0dp"
android:layout_height="0dp"
app:constraint_referenced_ids="tvBackgroundRestricted,btnBackgroundRestricted" />
<androidx.constraintlayout.widget.Group <androidx.constraintlayout.widget.Group
android:id="@+id/grpDataSaver" android:id="@+id/grpDataSaver"
android:layout_width="0dp" android:layout_width="0dp"

@ -213,6 +213,7 @@
<string name="title_setup_doze_instructions">In the next Android dialog change "Not optimized" to "All apps", select this app and select "Don\'t optimize"</string> <string name="title_setup_doze_instructions">In the next Android dialog change "Not optimized" to "All apps", select this app and select "Don\'t optimize"</string>
<string name="title_setup_doze_battery">High battery usage?</string> <string name="title_setup_doze_battery">High battery usage?</string>
<string name="title_setup_doze_stopped">Sync stopped?</string> <string name="title_setup_doze_stopped">Sync stopped?</string>
<string name="title_setup_background">Background restrictions are enabled</string>
<string name="title_setup_data">Data saver is enabled</string> <string name="title_setup_data">Data saver is enabled</string>
<string name="title_setup_advanced_options">Show advanced options</string> <string name="title_setup_advanced_options">Show advanced options</string>
<string name="title_setup_inbox">Go to inbox</string> <string name="title_setup_inbox">Go to inbox</string>

Loading…
Cancel
Save