New setting: Automatic app list updates only on wifi (fixes: #380)
This commit is contained in:
parent
f16234e084
commit
d6f0fbca98
@ -22,6 +22,7 @@
|
||||
android:required="false" />
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
|
||||
|
@ -9,19 +9,21 @@
|
||||
<string name="version">Version</string>
|
||||
<string name="n_versions_available">%d versions available</string>
|
||||
<string name="n_version_available">%d version available</string>
|
||||
<string name="notify">Notify</string>
|
||||
<string name="cache_downloaded">Cache downloaded apps</string>
|
||||
<string name="keep_downloaded">Keep downloaded apk files on SD card</string>
|
||||
<string name="updates">Updates</string>
|
||||
<string name="other">Other</string>
|
||||
<string name="notify_updates_available">Notify when new updates are available</string>
|
||||
<string name="update_apps_list">Update app list from repositories automatically
|
||||
</string>
|
||||
<string name="update_history">Update history</string>
|
||||
<string name="update_history_desc">Days to show new/updated apps</string>
|
||||
<string name="last_update_check">Last repo scan: %s</string>
|
||||
<string name="never">never</string>
|
||||
|
||||
<string name="automatic_repo_scan">Automatic repo scan</string>
|
||||
<string name="update_apps_list">Update app list from repositories automatically</string>
|
||||
<string name="automatic_scan_wifi">Only on wifi</string>
|
||||
<string name="automatic_scan_wifi_desc">Update app lists automatically only on wifi</string>
|
||||
<string name="notify">Notify</string>
|
||||
<string name="notify_updates_available">Notify when new updates are available</string>
|
||||
<string name="update_history">Update history</string>
|
||||
<string name="update_history_desc">Days to show new/updated apps</string>
|
||||
|
||||
<string name="search_results">Search Results</string>
|
||||
<string name="app_details">App Details</string>
|
||||
|
@ -5,6 +5,9 @@
|
||||
android:summary="@string/update_apps_list" android:key="updateInterval"
|
||||
android:defaultValue="24" android:entries="@array/updateIntervalNames"
|
||||
android:entryValues="@array/updateIntervalValues" />
|
||||
<CheckBoxPreference android:title="@string/automatic_scan_wifi"
|
||||
android:defaultValue="false" android:summary="@string/automatic_scan_wifi_desc"
|
||||
android:key="updateOnWifiOnly" />
|
||||
<CheckBoxPreference android:title="@string/notify"
|
||||
android:defaultValue="true" android:summary="@string/notify_updates_available"
|
||||
android:key="updateNotify" />
|
||||
|
@ -22,7 +22,9 @@ import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.preference.Preference;
|
||||
import android.preference.PreferenceActivity;
|
||||
import android.preference.Preference.OnPreferenceClickListener;
|
||||
import android.preference.Preference.OnPreferenceChangeListener;
|
||||
import android.preference.ListPreference;
|
||||
import android.preference.CheckBoxPreference;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import android.support.v4.app.NavUtils;
|
||||
@ -30,7 +32,7 @@ import android.support.v4.app.NavUtils;
|
||||
import org.fdroid.fdroid.compat.ActionBarCompat;
|
||||
|
||||
public class PreferencesActivity extends PreferenceActivity implements
|
||||
OnPreferenceClickListener {
|
||||
OnPreferenceChangeListener {
|
||||
|
||||
Intent ret;
|
||||
|
||||
@ -39,10 +41,14 @@ public class PreferencesActivity extends PreferenceActivity implements
|
||||
super.onCreate(savedInstanceState);
|
||||
ActionBarCompat.create(this).setDisplayHomeAsUpEnabled(true);
|
||||
addPreferencesFromResource(R.xml.preferences);
|
||||
//for (String prefkey : new String[] { }) {
|
||||
//Preference pref = findPreference(prefkey);
|
||||
//pref.setOnPreferenceClickListener(this);
|
||||
//}
|
||||
for (String prefkey : new String[] { "updateInterval" }) {
|
||||
Preference pref = findPreference(prefkey);
|
||||
pref.setOnPreferenceChangeListener(this);
|
||||
CheckBoxPreference onlyOnWifi = (CheckBoxPreference)
|
||||
findPreference("updateOnWifiOnly");
|
||||
onlyOnWifi.setEnabled(Integer.parseInt(
|
||||
((ListPreference)pref).getValue()) > 0);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -56,13 +62,16 @@ public class PreferencesActivity extends PreferenceActivity implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceClick(Preference preference) {
|
||||
// Currently no actions are returned
|
||||
//String key = preference.getKey();
|
||||
//if (key.equals("...")) {
|
||||
Intent ret = new Intent();
|
||||
setResult(RESULT_OK, ret);
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
String key = preference.getKey();
|
||||
if (key.equals("updateInterval")) {
|
||||
int interval = Integer.parseInt(newValue.toString());
|
||||
CheckBoxPreference onlyOnWifi = (CheckBoxPreference)
|
||||
findPreference("updateOnWifiOnly");
|
||||
onlyOnWifi.setEnabled(interval > 0);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -30,6 +30,8 @@ import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.SharedPreferences.Editor;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.NetworkInfo;
|
||||
import android.os.Bundle;
|
||||
import android.os.ResultReceiver;
|
||||
import android.os.SystemClock;
|
||||
@ -137,6 +139,18 @@ public class UpdateService extends IntentService implements ProgressListener {
|
||||
+ "ms ago, interval is " + interval + " hours");
|
||||
return;
|
||||
}
|
||||
|
||||
// If we are to update the repos only on wifi, make sure that
|
||||
// connection is active
|
||||
if (prefs.getBoolean("updateOnWifiOnly", false)) {
|
||||
ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
NetworkInfo.State wifi = conMan.getNetworkInfo(1).getState();
|
||||
if (wifi != NetworkInfo.State.CONNECTED &&
|
||||
wifi != NetworkInfo.State.CONNECTING) {
|
||||
Log.d("FDroid", "Skipping update - wifi not available");
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Log.d("FDroid", "Unscheduled (manually requested) update");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user