Check for suitable internet connection

pull/152/head
M66B 7 years ago
parent 928ffe5d0e
commit d896671534

@ -285,7 +285,7 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
protected Void onExecute(Context context, Bundle args) {
long fid = args.getLong("folder");
if (!Helper.isConnected(context))
if (!Helper.suitableNetwork(context, false))
throw new IllegalArgumentException(context.getString(R.string.title_no_internet));
DB db = DB.getInstance(context);

@ -2745,7 +2745,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
this.name_email = prefs.getBoolean("name_email", !compact);
this.zoom = zoom;
this.sort = sort;
this.internet = Helper.isConnected(context);
this.internet = Helper.suitableNetwork(context, false);
this.properties = properties;
@ -2826,7 +2826,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
}
void checkInternet() {
boolean internet = Helper.isConnected(context);
boolean internet = Helper.suitableNetwork(context, false);
if (this.internet != internet) {
this.internet = internet;
notifyDataSetChanged();

@ -710,7 +710,7 @@ public class FragmentCompose extends FragmentBase {
};
private void checkInternet() {
boolean internet = Helper.isConnected(getContext());
boolean internet = Helper.suitableNetwork(getContext(), false);
Boolean content = (Boolean) tvNoInternet.getTag();
tvNoInternet.setVisibility(!internet && content != null && !content ? View.VISIBLE : View.GONE);

@ -288,7 +288,7 @@ public class FragmentFolders extends FragmentBase {
protected Void onExecute(Context context, Bundle args) {
long aid = args.getLong("account");
if (!Helper.isConnected(context))
if (!Helper.suitableNetwork(context, false))
throw new IllegalArgumentException(context.getString(R.string.title_no_internet));
DB db = DB.getInstance(context);

@ -498,7 +498,7 @@ public class FragmentMessages extends FragmentBase {
protected Boolean onExecute(Context context, Bundle args) {
long fid = args.getLong("folder");
if (!Helper.isConnected(context))
if (!Helper.suitableNetwork(context, false))
throw new IllegalArgumentException(context.getString(R.string.title_no_internet));
DB db = DB.getInstance(context);

@ -93,7 +93,6 @@ import javax.mail.MessageRemovedException;
import javax.mail.MessagingException;
import javax.mail.Store;
import javax.mail.internet.InternetAddress;
import javax.net.ssl.SSLException;
import androidx.annotation.NonNull;
import androidx.browser.customtabs.CustomTabsIntent;
@ -693,8 +692,14 @@ public class Helper {
return filename.substring(index + 1);
}
static boolean isConnected(Context context) {
return (isMetered(context, false) != null);
static boolean suitableNetwork(Context context, boolean log) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean metered = prefs.getBoolean("metered", true);
Boolean isMetered = isMetered(context, log);
boolean suitable = (isMetered != null && (metered || !isMetered));
if (log)
EntityLog.log(context, "suitable=" + suitable + " metered=" + metered + " isMetered=" + isMetered);
return suitable;
}
static Boolean isMetered(Context context, boolean log) {

@ -137,14 +137,14 @@ public class ServiceSend extends LifecycleService {
@Override
public void onAvailable(Network network) {
Log.i("Service send available=" + network);
if (Helper.isConnected(ServiceSend.this))
if (Helper.suitableNetwork(ServiceSend.this, false))
run();
}
@Override
public void onCapabilitiesChanged(Network network, NetworkCapabilities caps) {
Log.i("Service send caps=" + caps);
if (Helper.isConnected(ServiceSend.this))
if (Helper.suitableNetwork(ServiceSend.this, false))
run();
}
@ -210,7 +210,7 @@ public class ServiceSend extends LifecycleService {
Log.i(outbox.name + " end op=" + op.id + "/" + op.name);
}
if (!Helper.isConnected(ServiceSend.this))
if (!Helper.suitableNetwork(ServiceSend.this, false))
break;
}

@ -887,7 +887,7 @@ public class ServiceSynchronize extends LifecycleService {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
EntityLog.log(ServiceSynchronize.this, "Available " + network + " " + cm.getNetworkInfo(network));
if (!started && suitableNetwork())
if (!started && Helper.suitableNetwork(ServiceSynchronize.this, true))
queue_reload(true, "connect " + network);
} catch (Throwable ex) {
Log.e(ex);
@ -901,7 +901,7 @@ public class ServiceSynchronize extends LifecycleService {
try {
if (!started) {
EntityLog.log(ServiceSynchronize.this, "Network " + network + " capabilities " + capabilities);
if (suitableNetwork())
if (Helper.suitableNetwork(ServiceSynchronize.this, true))
queue_reload(true, "capabilities " + network);
}
} catch (Throwable ex) {
@ -916,7 +916,7 @@ public class ServiceSynchronize extends LifecycleService {
try {
EntityLog.log(ServiceSynchronize.this, "Lost " + network);
if (started && !suitableNetwork()) {
if (started && !Helper.suitableNetwork(ServiceSynchronize.this, true)) {
lastLost = new Date().getTime();
queue_reload(false, "disconnect " + network);
}
@ -926,20 +926,6 @@ public class ServiceSynchronize extends LifecycleService {
}
}
private boolean suitableNetwork() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ServiceSynchronize.this);
boolean metered = prefs.getBoolean("metered", true);
Boolean isMetered = Helper.isMetered(ServiceSynchronize.this, true);
boolean suitable = (isMetered != null && (metered || !isMetered));
EntityLog.log(ServiceSynchronize.this,
"suitable=" + suitable + " metered=" + metered + " isMetered=" + isMetered);
// The connected state is deliberately ignored
return suitable;
}
private boolean isEnabled() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ServiceSynchronize.this);
boolean enabled = prefs.getBoolean("enabled", true);
@ -1100,7 +1086,7 @@ public class ServiceSynchronize extends LifecycleService {
private void queue_reload(final boolean start, final String reason) {
final boolean doStop = started;
final boolean doStart = (start && isEnabled() && suitableNetwork());
final boolean doStart = (start && isEnabled() && Helper.suitableNetwork(ServiceSynchronize.this, true));
EntityLog.log(ServiceSynchronize.this, "Queue reload" +
" doStop=" + doStop + " doStart=" + doStart + " queued=" + queued + " " + reason);

@ -157,7 +157,7 @@ public class ViewModelBrowse extends ViewModel {
try {
// Check connectivity
if (!Helper.isConnected(state.context))
if (!Helper.suitableNetwork(state.context, false))
throw new IllegalArgumentException(state.context.getString(R.string.title_no_internet));
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(state.context);

@ -354,7 +354,7 @@
<string name="title_no_saf">Storage access framework not available</string>
<string name="title_no_stream">An outdated app sent a file path instead of a file stream</string>
<string name="title_no_contacts">Contact picker not available</string>
<string name="title_no_internet">No internet connection</string>
<string name="title_no_internet">No or no suitable internet connection</string>
<string name="title_no_folder">Folder does not exist</string>
<string name="title_accross_remark">Messages moved across accounts will be downloaded again resulting in extra data usage</string>
<string name="title_raw_saved">Raw message saved</string>

Loading…
Cancel
Save