From 57b587dfe38959b0230407748df4df2339d6762b Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 14 Feb 2019 15:11:52 +0100 Subject: [PATCH] Some users never use WiFi, check for that state on first run Lots of people complain that the graphics aren't being downloaded. That's because they never use F-Droid while on WiFi and the default prefs do not allow downloading graphics while on Data. This sets the preference to allow downloading graphics while on Data if only Data is enabled, and not WiFi, when the user first starts F-Droid. closes #1592 --- .../java/org/fdroid/fdroid/FDroidApp.java | 1 + .../java/org/fdroid/fdroid/Preferences.java | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java index 55ceaf3b2..1f3ec670b 100644 --- a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java +++ b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java @@ -454,6 +454,7 @@ public class FDroidApp extends Application { ImageLoader.getInstance().init(config); if (preferences.isIndexNeverUpdated()) { + preferences.setDefaultForDataOnlyConnection(this); // force this check to ensure it starts fetching the index on initial runs networkState = ConnectivityMonitorService.getNetworkState(this); } diff --git a/app/src/main/java/org/fdroid/fdroid/Preferences.java b/app/src/main/java/org/fdroid/fdroid/Preferences.java index 9dc93a1ab..1ed9009d7 100644 --- a/app/src/main/java/org/fdroid/fdroid/Preferences.java +++ b/app/src/main/java/org/fdroid/fdroid/Preferences.java @@ -25,6 +25,8 @@ package org.fdroid.fdroid; import android.annotation.SuppressLint; import android.content.Context; import android.content.SharedPreferences; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; import android.os.Build; import android.support.v7.preference.PreferenceManager; import android.text.format.DateUtils; @@ -443,6 +445,26 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh return preferences.getInt(PREF_OVER_DATA, IGNORED_I); } + /** + * Some users never use WiFi, this lets us check for that state on first run. + */ + public void setDefaultForDataOnlyConnection(Context context) { + ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + if (cm == null) { + return; + } + NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); + if (activeNetwork == null || !activeNetwork.isConnectedOrConnecting()) { + return; + } + if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) { + NetworkInfo wifiNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI); + if (!wifiNetwork.isConnectedOrConnecting()) { + preferences.edit().putInt(PREF_OVER_DATA, OVER_NETWORK_ALWAYS).apply(); + } + } + } + /** * This preference's default is set dynamically based on whether Orbot is * installed. If Orbot is installed, default to using Tor, the user can still override