Moved data saver

This commit is contained in:
M66B 2019-09-02 11:29:48 +02:00
parent f78f3e502d
commit 76a6dad91b
3 changed files with 65 additions and 35 deletions

View File

@ -31,18 +31,15 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.res.AssetFileDescriptor;
import android.content.res.Configuration;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.MenuItem;
@ -68,7 +65,6 @@ import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.textfield.TextInputLayout;
import org.json.JSONArray;
@ -106,7 +102,6 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
private ActionBarDrawerToggle drawerToggle;
private ConstraintLayout drawerContainer;
private RecyclerView rvMenu;
private Snackbar sbDataSaver;
private boolean hasAccount;
private String password;
@ -252,20 +247,6 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
adapter.set(menus);
sbDataSaver = Snackbar.make(view, R.string.title_setup_data, Snackbar.LENGTH_INDEFINITE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
final Intent settings = new Intent(
Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS,
Uri.parse("package:" + BuildConfig.APPLICATION_ID));
if (settings.resolveActivity(getPackageManager()) != null)
sbDataSaver.setAction(R.string.title_setup_manage, new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(settings);
}
});
}
getSupportFragmentManager().addOnBackStackChangedListener(this);
if (getSupportFragmentManager().getFragments().size() == 0) {
@ -320,16 +301,6 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
iff.addAction(ACTION_EDIT_ACCOUNT);
iff.addAction(ACTION_EDIT_IDENTITY);
lbm.registerReceiver(receiver, iff);
// https://developer.android.com/training/basics/network-ops/data-saver.html
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm != null) {
int status = cm.getRestrictBackgroundStatus();
if (status == ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED)
sbDataSaver.show();
}
}
}
@Override
@ -337,9 +308,6 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
super.onPause();
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this);
lbm.unregisterReceiver(receiver);
if (sbDataSaver.isShown())
sbDataSaver.dismiss();
}
@Override

View File

@ -28,6 +28,8 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.PowerManager;
@ -73,9 +75,12 @@ public class FragmentSetup extends FragmentBase {
private Button btnDoze;
private Button btnBattery;
private Button btnDataSaver;
private Button btnInbox;
private Group grpWelcome;
private Group grpDataSaver;
private int textColorPrimary;
private int colorWarning;
@ -117,9 +122,12 @@ public class FragmentSetup extends FragmentBase {
btnDoze = view.findViewById(R.id.btnDoze);
btnBattery = view.findViewById(R.id.btnBattery);
btnDataSaver = view.findViewById(R.id.btnDataSaver);
btnInbox = view.findViewById(R.id.btnInbox);
grpWelcome = view.findViewById(R.id.grpWelcome);
grpDataSaver = view.findViewById(R.id.grpDataSaver);
PackageManager pm = getContext().getPackageManager();
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
@ -191,6 +199,20 @@ public class FragmentSetup extends FragmentBase {
}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
final Intent settings = new Intent(
Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS,
Uri.parse("package:" + BuildConfig.APPLICATION_ID));
btnDataSaver.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(settings);
}
});
btnDataSaver.setEnabled(settings.resolveActivity(pm) != null);
}
btnInbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@ -219,6 +241,7 @@ public class FragmentSetup extends FragmentBase {
boolean welcome = prefs.getBoolean("welcome", true);
grpWelcome.setVisibility(welcome ? View.VISIBLE : View.GONE);
grpDataSaver.setVisibility(View.GONE);
int[] grantResults = new int[permissions.length];
for (int i = 0; i < permissions.length; i++)
@ -349,6 +372,17 @@ public class FragmentSetup extends FragmentBase {
tvDozeDone.setText(ignoring ? R.string.title_setup_done : R.string.title_setup_to_do);
tvDozeDone.setTextColor(ignoring ? textColorPrimary : colorWarning);
tvDozeDone.setCompoundDrawablesWithIntrinsicBounds(ignoring ? check : null, null, null, null);
// https://developer.android.com/training/basics/network-ops/data-saver.html
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
ConnectivityManager cm = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm != null) {
int status = cm.getRestrictBackgroundStatus();
grpDataSaver.setVisibility(
status == ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED
? View.VISIBLE : View.GONE);
}
}
}
@Override

View File

@ -451,6 +451,29 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnDoze" />
<TextView
android:id="@+id/tvDataSaver"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/title_setup_data"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="?attr/colorWarning"
android:textIsSelectable="true"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnBattery" />
<Button
android:id="@+id/btnDataSaver"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="0dp"
android:minHeight="0dp"
android:text="@string/title_setup_manage"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvDataSaver" />
<!-- inbox -->
<View
@ -460,7 +483,7 @@
android:layout_marginTop="12dp"
android:background="?attr/colorSeparator"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnBattery" />
app:layout_constraintTop_toBottomOf="@id/btnDataSaver" />
<ImageView
android:id="@+id/five"
@ -499,8 +522,13 @@
android:id="@+id/grpWelcome"
android:layout_width="0dp"
android:layout_height="0dp"
app:constraint_referenced_ids="
tvWelcome,ibWelcome,vSeparatorWelcome" />
app:constraint_referenced_ids="tvWelcome,ibWelcome,vSeparatorWelcome" />
<androidx.constraintlayout.widget.Group
android:id="@+id/grpDataSaver"
android:layout_width="0dp"
android:layout_height="0dp"
app:constraint_referenced_ids="tvDataSaver,btnDataSaver" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>