|
20 | 20 |
|
21 | 21 | package org.schabi.newpipe; |
22 | 22 |
|
| 23 | +import android.app.AlertDialog; |
23 | 24 | import android.content.BroadcastReceiver; |
24 | 25 | import android.content.Context; |
25 | 26 | import android.content.Intent; |
|
92 | 93 | import org.schabi.newpipe.util.external_communication.ShareUtils; |
93 | 94 | import org.schabi.newpipe.views.FocusOverlayView; |
94 | 95 |
|
| 96 | +import java.time.Instant; |
| 97 | +import java.time.temporal.ChronoUnit; |
95 | 98 | import java.util.ArrayList; |
96 | 99 | import java.util.List; |
97 | 100 | import java.util.Objects; |
@@ -192,6 +195,12 @@ protected void onCreate(final Bundle savedInstanceState) { |
192 | 195 | UpdateSettingsFragment.askForConsentToUpdateChecks(this); |
193 | 196 | } |
194 | 197 |
|
| 198 | + // ReleaseVersionUtil.INSTANCE.isReleaseApk() will be true only for main official build |
| 199 | + // We want every release build (nightly, nightly-refactor) to show the popup |
| 200 | + if (!DEBUG) { |
| 201 | + showKeepAndroidDialog(); |
| 202 | + } |
| 203 | + |
195 | 204 | MigrationManager.showUserInfoIfPresent(this); |
196 | 205 | } |
197 | 206 |
|
@@ -889,4 +898,57 @@ private boolean bottomSheetHiddenOrCollapsed() { |
889 | 898 | || sheetState == BottomSheetBehavior.STATE_COLLAPSED; |
890 | 899 | } |
891 | 900 |
|
| 901 | + private void showKeepAndroidDialog() { |
| 902 | + final var prefs = PreferenceManager.getDefaultSharedPreferences(this); |
| 903 | + |
| 904 | + final var now = Instant.now(); |
| 905 | + final var kaoLastCheck = Instant.ofEpochMilli(prefs.getLong( |
| 906 | + getString(R.string.kao_last_checked_key), |
| 907 | + 0 |
| 908 | + )); |
| 909 | + |
| 910 | + final var supportedLannguages = List.of("fr", "de", "ca", "es", "id", "it", "pl", |
| 911 | + "pt", "cs", "sk", "fa", "ar", "tr", "el", "th", "ru", "uk", "ko", "zh", "ja"); |
| 912 | + final var locale = Localization.getAppLocale(); |
| 913 | + final String kaoBaseUrl = "https://keepandroidopen.org/"; |
| 914 | + final String kaoURI; |
| 915 | + if (supportedLannguages.contains(locale.getLanguage())) { |
| 916 | + if ("zh".equals(locale.getLanguage())) { |
| 917 | + kaoURI = kaoBaseUrl + ("TW".equals(locale.getCountry()) ? "zh-TW" : "zh-CN"); |
| 918 | + } else { |
| 919 | + kaoURI = kaoBaseUrl + locale.getLanguage(); |
| 920 | + } |
| 921 | + } else { |
| 922 | + kaoURI = kaoBaseUrl; |
| 923 | + } |
| 924 | + final var solutionURI = |
| 925 | + "https://github.com/woheller69/FreeDroidWarn?tab=readme-ov-file#solutions"; |
| 926 | + |
| 927 | + if (kaoLastCheck.plus(30, ChronoUnit.DAYS).isBefore(now)) { |
| 928 | + final var dialog = new AlertDialog.Builder(this) |
| 929 | + .setTitle("Keep Android Open") |
| 930 | + .setCancelable(false) |
| 931 | + .setMessage(this.getString(R.string.kao_dialog_warning)) |
| 932 | + .setPositiveButton(this.getString(android.R.string.ok), (d, w) -> { |
| 933 | + prefs.edit() |
| 934 | + .putLong( |
| 935 | + getString(R.string.kao_last_checked_key), |
| 936 | + now.toEpochMilli() |
| 937 | + ) |
| 938 | + .apply(); |
| 939 | + }) |
| 940 | + .setNeutralButton(this.getString(R.string.kao_solution), null) |
| 941 | + .setNegativeButton(this.getString(R.string.kao_dialog_more_info), null) |
| 942 | + .show(); |
| 943 | + |
| 944 | + // If we use setNeutralButton and etc. dialog will close after pressing the buttons, |
| 945 | + // but we want it to close only when positive button is pressed |
| 946 | + dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setOnClickListener(v -> |
| 947 | + ShareUtils.openUrlInBrowser(this, kaoURI) |
| 948 | + ); |
| 949 | + dialog.getButton(AlertDialog.BUTTON_NEUTRAL).setOnClickListener(v -> |
| 950 | + ShareUtils.openUrlInBrowser(this, solutionURI) |
| 951 | + ); |
| 952 | + } |
| 953 | + } |
892 | 954 | } |
0 commit comments