diff --git a/app/src/main/java/org/fdroid/fdroid/Preferences.java b/app/src/main/java/org/fdroid/fdroid/Preferences.java index aa4f1f6d6..68def793a 100644 --- a/app/src/main/java/org/fdroid/fdroid/Preferences.java +++ b/app/src/main/java/org/fdroid/fdroid/Preferences.java @@ -142,8 +142,9 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh lightWithDarkActionBar, // Obsolete } + public static final long UPDATE_INTERVAL_DISABLED = Long.MAX_VALUE; public static final long[] UPDATE_INTERVAL_VALUES = { - Long.MAX_VALUE, // never + UPDATE_INTERVAL_DISABLED, DateUtils.WEEK_IN_MILLIS * 2, DateUtils.WEEK_IN_MILLIS, DateUtils.DAY_IN_MILLIS, @@ -211,12 +212,8 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh * Get the update interval in milliseconds. */ public long getUpdateInterval() { - if (getOverData() == OVER_NETWORK_NEVER && getOverWifi() == OVER_NETWORK_NEVER) { - return UPDATE_INTERVAL_VALUES[0]; - } else { - int position = preferences.getInt(PREF_UPDATE_INTERVAL, IGNORED_I); - return UPDATE_INTERVAL_VALUES[position]; - } + int position = preferences.getInt(PREF_UPDATE_INTERVAL, IGNORED_I); + return UPDATE_INTERVAL_VALUES[position]; } /** diff --git a/app/src/main/java/org/fdroid/fdroid/UpdateJobService.java b/app/src/main/java/org/fdroid/fdroid/UpdateJobService.java index 6911584b4..88ed0b674 100644 --- a/app/src/main/java/org/fdroid/fdroid/UpdateJobService.java +++ b/app/src/main/java/org/fdroid/fdroid/UpdateJobService.java @@ -20,7 +20,7 @@ public class UpdateJobService extends JobService { @Override public boolean onStopJob(JobParameters params) { - // TODO this should gracefully stop UpdateService + UpdateService.stopNow(this); return true; } } diff --git a/app/src/main/java/org/fdroid/fdroid/UpdateService.java b/app/src/main/java/org/fdroid/fdroid/UpdateService.java index 3598aa186..e87b7e725 100644 --- a/app/src/main/java/org/fdroid/fdroid/UpdateService.java +++ b/app/src/main/java/org/fdroid/fdroid/UpdateService.java @@ -93,8 +93,6 @@ public class UpdateService extends JobIntentService { private NotificationCompat.Builder notificationBuilder; private AppUpdateStatusManager appUpdateStatusManager; - private static boolean updating; - public static void updateNow(Context context) { updateRepoNow(context, null); } @@ -140,6 +138,12 @@ public class UpdateService extends JobIntentService { public static void schedule(Context context) { Preferences prefs = Preferences.get(); long interval = prefs.getUpdateInterval(); + int data = prefs.getOverData(); + int wifi = prefs.getOverWifi(); + boolean scheduleNewJob = + interval != Preferences.UPDATE_INTERVAL_DISABLED + && data != Preferences.OVER_NETWORK_NEVER + && wifi != Preferences.OVER_NETWORK_NEVER; if (Build.VERSION.SDK_INT < 21) { Intent intent = new Intent(context, UpdateService.class); @@ -147,7 +151,7 @@ public class UpdateService extends JobIntentService { AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); alarm.cancel(pending); - if (interval > 0) { + if (scheduleNewJob) { alarm.setInexactRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + 5000, interval, pending); Utils.debugLog(TAG, "Update scheduler alarm set"); @@ -165,17 +169,19 @@ public class UpdateService extends JobIntentService { builder.setRequiresBatteryNotLow(true) .setRequiresStorageNotLow(true); } - int wifi = prefs.getOverWifi(); - if (prefs.getOverData() == Preferences.OVER_NETWORK_ALWAYS) { - if (Build.VERSION.SDK_INT < 26 || wifi == Preferences.OVER_NETWORK_ALWAYS) { - builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); - } else { - builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_METERED); - } - } else if (wifi == Preferences.OVER_NETWORK_ALWAYS) { + if (data == Preferences.OVER_NETWORK_ALWAYS && wifi == Preferences.OVER_NETWORK_ALWAYS) { + builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); + } else { builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED); } - jobScheduler.schedule(builder.build()); + + jobScheduler.cancel(JOB_ID); + if (scheduleNewJob) { + jobScheduler.schedule(builder.build()); + Utils.debugLog(TAG, "Update scheduler alarm set"); + } else { + Utils.debugLog(TAG, "Update scheduler alarm not set"); + } } } @@ -184,7 +190,7 @@ public class UpdateService extends JobIntentService { * the app to users, so they know something is happening. */ public static boolean isUpdating() { - return updating; + return updateService != null; } private static volatile boolean isScheduleIfStillOnWifiRunning; @@ -230,11 +236,22 @@ public class UpdateService extends JobIntentService { isScheduleIfStillOnWifiRunning = false; return null; } + + } + + private static UpdateService updateService; + + public static void stopNow(Context context) { + if (updateService != null) { + updateService.stopSelf(JOB_ID); + updateService = null; + } } @Override public void onCreate() { super.onCreate(); + updateService = this; notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); @@ -263,6 +280,7 @@ public class UpdateService extends JobIntentService { super.onDestroy(); notificationManager.cancel(NOTIFY_ID_UPDATING); LocalBroadcastManager.getInstance(this).unregisterReceiver(updateStatusReceiver); + updateService = null; } public static void sendStatus(Context context, int statusCode) { @@ -402,14 +420,13 @@ public class UpdateService extends JobIntentService { sendNoInternetToast(); } return; - } else if (manualUpdate || forcedUpdate) { + } else if ((manualUpdate || forcedUpdate) && fdroidPrefs.isOnDemandDownloadAllowed()) { Utils.debugLog(TAG, "manually requested or forced update"); - } else if (!fdroidPrefs.isBackgroundDownloadAllowed()) { + } else if (!fdroidPrefs.isBackgroundDownloadAllowed() && !fdroidPrefs.isOnDemandDownloadAllowed()) { Utils.debugLog(TAG, "don't run update"); return; } - updating = true; setNotification(); LocalBroadcastManager.getInstance(this).registerReceiver(updateStatusReceiver, new IntentFilter(LOCAL_ACTION_STATUS)); @@ -498,8 +515,6 @@ public class UpdateService extends JobIntentService { } catch (Exception e) { Log.e(TAG, "Exception during update processing", e); sendStatus(this, STATUS_ERROR_GLOBAL, e.getMessage()); - } finally { - updating = false; } long time = System.currentTimeMillis() - startTime; diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 2a406ee29..7204634da 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -63,8 +63,8 @@ Nincs elérhető alkalmazás, ami képes ezt kezelni: %s. Téma Ezt a tárolót még nem használta. Engedélyeznie kell, hogy megtekinthesse az általa kínált alkalmazásokat. - Egy tároló törlése azt jelenti, hogy a belőle származó alkalmazások többé nem lesznek elérhetőek az F-Droidban. -\n + Egy tároló törlése azt jelenti, hogy a belőle származó alkalmazások többé nem lesznek elérhetőek. +\n \nMegjegyzés: Minden korábban telepített alkalmazás az eszközön marad. %1$s letiltva. \n @@ -77,7 +77,7 @@ Instabil frissítések Frissítések ajánlása instabil verziókra Kiváltságos kiterjesztés - Az F-Droid kiváltságos kiterjesztésének használata a csomagok telepítéséhez, frissítéséhez és eltávolításához + Kiváltságos kiterjesztés használata a csomagok telepítéséhez, frissítéséhez és eltávolításához Helyi tároló neve A helyi tárolója közzétett címe: %s Titkosított HTTPS:// kapcsolat használata a helyi tárolóhoz @@ -139,7 +139,8 @@ Név Ismeretlen Törli a tárolót? - F-Droid tároló keresése itt:\n%1$s + Csomagtároló keresése itt: +\n%1$s Nyelv Rendszer-alapértelmezés @@ -276,9 +277,7 @@ Örökké Telepítési előzmények megtartása - Napló tárolása az F-Droidban végzett telepítésekről és - eltávolításokról - + Az összes telepítés és eltávolítás naplójának tárolása egy privát tárolóban Frissítések automatikus telepítése Alkalmazásfrissítések letöltése és telepítése a háttérben Kiváltságos kiterjesztés frissítése/törlése @@ -354,7 +353,7 @@ APK fájlok tárolóhoz csatolása… A kért fájl nem található. Ez azt jelenti, hogy az alkalmazások listája nem ellenőrizhető. Óvatosnak kell lennie a hitelesítetlen indexekből letöltött alkalmazásokkal. - A(z) %1$s F-Droid tároló mentve. + A(z) %1$s csomagtároló mentve. %s-ig %1$s-től %2$s-ig Készítette: %s @@ -525,4 +524,17 @@ A Wi-Fi Hotspot nem engedélyezhető! A kamerának úgy tűnik nincs autofókusza. Így nehézkes lehet a kód leolvasása. + Kérdezzen az összeomlási jelentések küldésekor + Adatok begyűjtése az összeomlásokról, és annak megkérdezése, hogy elküldje azokat a fejlesztőnek + Minden értesítés elrejtése + Az összes művelet megakadályozása az állapotsávban és az értesítési oldalsávban való megjelenítésben. + Telepítési előzmények + Az összes telepítés és eltávolítás privát naplójának megtekintése + Verzió és UUID küldése a kiszolgálóknak + Az alkalmazás verziójának és egy véletlenszerű, egyedi azonosítónak a felvétele letöltéskor az alkalmazás következő újraindításakor lép hatályba. + Engedélyezés a tárolóknak alkalmazások telepítését vagy eltávolítását + A tároló metaadatai tartalmazhatnak küldési kéréseket alkalmazások telepítéséhez vagy eltávolításához + A forráskód többé nem érhető el, a frissítések nem lehetségesek. + + Tároló megosztása diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index f4e2d954a..c965faf35 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -117,7 +117,7 @@ 不稳定更新 建议更新至不稳定的版本 - 使用F-Droid特权扩展安装、更新和卸载应用 + 使用特权扩展安装、更新和卸载应用 更新或卸载特权扩展 打开详情以更新或卸载特权扩展 本地软件源的名称 @@ -168,9 +168,9 @@ 权限 软件源 地址 - 已保存 F-Droid 软件源 %1$s。 - 正在 %1$s -\n里查找 F-Droid 软件源 + 已保存软件源 %1$s。 + 正在 %1$s +\n里查找软件源 语言 系统默认 @@ -262,13 +262,13 @@ 由 %1$s 提供。 下载中… - 从不 - 每小时 - 每 4 小时 - 每 12 小时 - 每天 - 每周 - 每两周 + 不自动更新应用 + 每小时检查一次更新 + 每 4 小时检查一次更新 + 每 12 小时检查一次更新 + 每天检查一次更新 + 每周检查一次更新 + 每两周检查一次更新 明亮 夜间 @@ -494,7 +494,7 @@ 当此连接可用时,总是使用它 仅当我点击下载时才使用此连接 从不使用此连接下载任何内容 - 这个应用程序的安全签章较弱 + 这个应用程序的安全签名较弱 这个应用程序包含已知的安全漏洞 %1$s已经设立,此举将会加入新的钥匙信息。 @@ -505,4 +505,11 @@ Wi-Fi 热点已启用 无法启用 Wi-Fi 热点! + 提示发送崩溃报告 + 收集有关崩溃的数据并询问是否发送给开发人员 + 隐藏所有通知 + 安装历史 + 发送版本和 UUID 到服务器 + 源代码不再可用,无法更新。 +