diff --git a/app/src/main/java/org/linphone/LinphoneActivity.java b/app/src/main/java/org/linphone/LinphoneActivity.java
index 5418acbc7..c58b3df65 100644
--- a/app/src/main/java/org/linphone/LinphoneActivity.java
+++ b/app/src/main/java/org/linphone/LinphoneActivity.java
@@ -368,11 +368,7 @@ public class LinphoneActivity extends LinphoneGenericActivity
}
} else {
if (getResources().getBoolean(R.bool.check_for_update_when_app_starts)) {
- String url = LinphonePreferences.instance().getCheckReleaseUrl();
- if (url != null && !url.isEmpty()) {
- LinphoneManager.getLcIfManagerNotDestroyedOrNull()
- .checkForUpdate(BuildConfig.VERSION_NAME);
- }
+ checkForUpdate();
}
}
@@ -620,11 +616,7 @@ public class LinphoneActivity extends LinphoneGenericActivity
// If permission was asked we wait here for the results so dialogs won't conflict
if (getResources().getBoolean(R.bool.check_for_update_when_app_starts)) {
- String url = LinphonePreferences.instance().getCheckReleaseUrl();
- if (url != null && !url.isEmpty()) {
- LinphoneManager.getLcIfManagerNotDestroyedOrNull()
- .checkForUpdate(BuildConfig.VERSION_NAME);
- }
+ checkForUpdate();
}
if (permissions.length <= 0) return;
@@ -669,6 +661,20 @@ public class LinphoneActivity extends LinphoneGenericActivity
}
}
+ private void checkForUpdate() {
+ String url = LinphonePreferences.instance().getCheckReleaseUrl();
+ if (url != null && !url.isEmpty()) {
+ int lastTimestamp = LinphonePreferences.instance().getLastCheckReleaseTimestamp();
+ int currentTimeStamp = (int) System.currentTimeMillis();
+ int interval = getResources().getInteger(R.integer.time_between_update_check); // 24h
+ if (lastTimestamp == 0 || currentTimeStamp - lastTimestamp >= interval) {
+ LinphoneManager.getLcIfManagerNotDestroyedOrNull()
+ .checkForUpdate(BuildConfig.VERSION_NAME);
+ LinphonePreferences.instance().setLastCheckReleaseTimestamp(currentTimeStamp);
+ }
+ }
+ }
+
private void initButtons() {
mTabBar = findViewById(R.id.footer);
mTopBar = findViewById(R.id.top_bar);
diff --git a/app/src/main/java/org/linphone/settings/LinphonePreferences.java b/app/src/main/java/org/linphone/settings/LinphonePreferences.java
index 37d8678cb..ff0075e2e 100644
--- a/app/src/main/java/org/linphone/settings/LinphonePreferences.java
+++ b/app/src/main/java/org/linphone/settings/LinphonePreferences.java
@@ -962,6 +962,14 @@ public class LinphonePreferences {
return getConfig().getString("misc", "version_check_url_root", null);
}
+ public int getLastCheckReleaseTimestamp() {
+ return getConfig().getInt("app", "version_check_url_last_timestamp", 0);
+ }
+
+ public void setLastCheckReleaseTimestamp(int timestamp) {
+ getConfig().setInt("app", "version_check_url_last_timestamp", timestamp);
+ }
+
public boolean isOverlayEnabled() {
return getConfig().getBool("app", "display_overlay", false);
}
diff --git a/app/src/main/res/values/non_localizable_custom.xml b/app/src/main/res/values/non_localizable_custom.xml
index d0503dd40..f430df0ce 100644
--- a/app/src/main/res/values/non_localizable_custom.xml
+++ b/app/src/main/res/values/non_localizable_custom.xml
@@ -130,6 +130,7 @@
true
true
true
+ 86400000
1000
7000