From 224ec9abe557fa6d7737ed55152feb6f2ce9a5b8 Mon Sep 17 00:00:00 2001 From: Patrick Schneider Date: Sun, 26 May 2024 21:09:48 +0200 Subject: [PATCH 1/5] [chore] Updates Target-SDK to sdk 34 and removes api keys. --- app/build.gradle | 14 +++++---- .../backup/BackupCreator.java | 4 +-- app/src/main/res/values-de/strings.xml | 2 +- app/src/main/res/values-it/strings.xml | 2 +- app/src/main/res/values-ja/strings.xml | 2 +- app/src/main/res/values-pt/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- build.gradle | 2 +- keys.properties | 30 ------------------- libs | 2 +- 10 files changed, 18 insertions(+), 44 deletions(-) delete mode 100644 keys.properties diff --git a/app/build.gradle b/app/build.gradle index e04fc3ff..f39f9a21 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,13 +4,13 @@ def keysFile = rootProject.file('keys.properties') android { - compileSdkVersion 32 + compileSdk 34 defaultConfig { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" applicationId "org.secuso.privacyfriendlyweather" minSdkVersion 17 - targetSdkVersion 32 + targetSdkVersion 34 versionCode 17 versionName "3.1.1" @@ -29,6 +29,10 @@ android { i++ } + if (keyString == "") { + keyString = null + } + buildConfigField "String[]", "DEFAULT_API_KEYS", "{" + keyString + "}" } else { buildConfigField "String[]", "DEFAULT_API_KEYS", "{null}" @@ -97,9 +101,9 @@ dependencies { implementation 'androidx.cardview:cardview:1.0.0' implementation 'com.readystatesoftware.sqliteasset:sqliteassethelper:2.0.1' - implementation 'androidx.room:room-runtime:2.4.3' - annotationProcessor 'androidx.room:room-compiler:2.4.3' - androidTestImplementation 'androidx.room:room-testing:2.4.3' + implementation 'androidx.room:room-runtime:2.6.1' + annotationProcessor 'androidx.room:room-compiler:2.6.1' + androidTestImplementation 'androidx.room:room-testing:2.6.1' def work_version = "2.7.1" implementation "androidx.work:work-runtime:$work_version" diff --git a/app/src/main/java/org/secuso/privacyfriendlyweather/backup/BackupCreator.java b/app/src/main/java/org/secuso/privacyfriendlyweather/backup/BackupCreator.java index 4c9823f8..acf51930 100644 --- a/app/src/main/java/org/secuso/privacyfriendlyweather/backup/BackupCreator.java +++ b/app/src/main/java/org/secuso/privacyfriendlyweather/backup/BackupCreator.java @@ -28,7 +28,7 @@ public class BackupCreator implements IBackupCreator { @Override - public void writeBackup(@NotNull Context context, @NotNull OutputStream outputStream) { + public boolean writeBackup(@NotNull Context context, @NotNull OutputStream outputStream) { // lock application, so no changes can be made as long as this backup is created // depending on the size of the application - this could take a bit @@ -85,6 +85,6 @@ public void writeBackup(@NotNull Context context, @NotNull OutputStream outputSt } Log.d("PFA BackupCreator", "Backup created successfully"); - + return true; } } diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index c1882396..444f69a9 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -140,7 +140,7 @@ Es wurde kein API Key bereitgestellt Wirklich den standard API Key wiederherstellen? API Key zurücksetzen - Privacy Friendly Wetter erhält die Wetterdaten von dem freien Service openweathermap.org. Dieser Service ist auf 1000 Anfragen pro Tag beschränkt. Sie könnten ihren eigenen API Key registrieren, um ihre eigenen 1000 Anfragen pro Tag zu bekommen. Andernfalls werden die Anfragen zwischen allen Benutzern von Privacy Friendly Wetter geteilt. + Privacy Friendly Wetter erhält die Wetterdaten von dem freien Service openweathermap.org. Dieser Service ist auf 1000 Anfragen pro Tag beschränkt. Sie müssen ihren eigenen API Key registrieren, um ihre 1000 Anfragen pro Tag zu bekommen. Setzen Sie das Interval der automatischen Updates Intervalle API Schlüssel diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index d2dc8e9b..c39053f0 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -133,7 +133,7 @@ Nessuna chiave API fornita Volete davvero ripristinare la chiave API di default? Reimpostare la chiave API - Privacy Friendly Weather riceve i dati meteo dal servizio gratuito openweathermap.org. Questo servizio è limitato a 1000 richieste al giorno. È possibile registrare la propria chiave API per ottenere le proprie 1000 richieste al giorno. In caso contrario, le richieste sono condivise tra tutti gli utenti di Privacy Friendly Weather. + Privacy Friendly Weather riceve i dati dal servizio gratuito di openweathermap.org. Questo servizio è limitato a 1000 chiamate al giorno. Devi registrare gratuitamente la tua chiave API per ricevere le tue 1000 chiamate. Impostare l\'intervallo di aggiornamento automatico Intervalli API Chiave diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index b753b3e0..418984f5 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -185,7 +185,7 @@ No API Key provided Do you really want to reset to the default API key? Reset API key - Privacy Friendly Weather receives data from the free service of openweathermap.org. This service is limited to 1000 calls per day. You could register your own API key for free to get your own 1000 calls. Otherwise, calls are shared between all users of Privacy Friendly Weather. + Privacy Friendly Weather receives data from the free service of openweathermap.org. This service is limited to 1000 calls per day. You have to register your own API key for free to get your 1000 calls. Set the interval of automatic updates Intervals API Key diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 1cdd6db0..35ea47b3 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -133,10 +133,10 @@ Nenhuma chave de API fornecida Deseja realmente redefinir a chave da API padrão? Redefinir chave de API - O Privacy Friendly Weather recebe dados meteorológicos do serviço gratuito openweathermap.org. Este serviço é limitado a 1000 pedidos por dia. Pode registar a sua própria chave API para obter os seus próprios 1000 pedidos por dia. Caso contrário, os pedidos são partilhados entre todos os utilizadores do Privacy Friendly Weather. Defina o intervalo de atualizações automáticas Intervalos Chave API + Privacy Friendly Weather recebe dados do serviço gratuito de openweathermap.org. Este serviço está limitado a 1000 chamadas por dia. Você precisa registrar sua própria chave de API gratuitamente para receber 1.000 chamadas. Inserir chave de API Redefinir chave de API Intervalo de atualização diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 51f2aa5e..ad904020 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -100,7 +100,7 @@ Miles API Key - Privacy Friendly Weather receives data from the free service of openweathermap.org. This service is limited to 1000 calls per day. You could register your own API key for free to get your own 1000 calls. Otherwise, calls are shared between all users of Privacy Friendly Weather. + Privacy Friendly Weather receives data from the free service of openweathermap.org. This service is limited to 1000 calls per day. You have to register your own API key for free to get your 1000 calls. Enter API Key No API Key provided Reset API Key diff --git a/build.gradle b/build.gradle index 67ac08cd..7ccfe1d9 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = "1.6.0" + ext.kotlin_version = "1.8.0" repositories { jcenter() diff --git a/keys.properties b/keys.properties deleted file mode 100644 index 91e35c83..00000000 --- a/keys.properties +++ /dev/null @@ -1,30 +0,0 @@ -0=6ce608ac284ab1c17e7b67488450b4bd -1=abf40562b349c94d0f3b9e7332b0f3f1 -2=497deb1e4cbe2f7418b2490c406773dd -3=3437ccf1c4b2b3171c27c2e750b85d7d -4=798fbf2eb2d4df14b36282c8d1ae7540 -5=a19ff31d93be58267f6e2d0c801ce8be -6=70ba27b72d52a009ad3fe12e476e6e6a -7=f49777ebe09354ae89fbbc4962e4d234 -8=419a879b8b5d2caae7a1473f02a27862 -9=ceb0f3ba09efc5aaec6b89339a11a641 -10=fc448b24d27d11e8ec56a3834d687c71 -11=077abdce2294a5ac939d36029a18feda -12=033ae6fe231b22a2984aa59ca36556c4 -13=11c13e922254727404fb2cd604286bf7 -14=7e4ea404fde6c0ba7525e0bf0c048f09 -15=f0c49746b10d1eefccc21125a50764c2 -16=27b5c234239423d6856274ce9ac5144d -17=d49ef98e224ec8429721f2aacb9f99e4 -18=4b42544998b67ba3b8209144f3a93475 -19=8e52c59dda777bc9de1addac842dea5c -20=9d2d0bdbad0dea03255962ab0cf724db -21=a35d0e57c0ee487d2e19449d18bb4cb7 -22=6743dffc1cfa1ea37b2b82921ad3cc30 -23=1b52a20ed42216168f4d520f91fcfa54 -24=b21f9468a62ddb3aeccebefc02743a8b -25=63e5c0cab61d906e7708e483140bcabc -26=828f4e88b661c5e973e71c95807da832 -27=c6608256b307be7c2859a2c60a1684a5 -28=c6267e13fa07e9f47f143bcb26166bf2 -29=c6aecc65269822fc32e000353730a478 diff --git a/libs b/libs index ec782fb3..ac8e3a0c 160000 --- a/libs +++ b/libs @@ -1 +1 @@ -Subproject commit ec782fb3ca894589a7be56af8acecad600b372b5 +Subproject commit ac8e3a0ca2df3b212815585bf55be0b187b21e71 From dce6a85b485ea71f4356a33af422474a192d0ab1 Mon Sep 17 00:00:00 2001 From: Patrick Schneider Date: Mon, 27 May 2024 14:59:50 +0200 Subject: [PATCH 2/5] [migration] migrates to onecall api 3.0 --- app/build.gradle | 2 +- .../activities/ForecastCityActivity.java | 18 +++++++++++++++++- app/src/main/res/values-de/strings.xml | 2 ++ app/src/main/res/values-it/strings.xml | 2 ++ app/src/main/res/values-ja/strings.xml | 2 ++ app/src/main/res/values-pt/strings.xml | 2 ++ app/src/main/res/values/strings.xml | 8 ++++++++ 7 files changed, 34 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f39f9a21..c48e284e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -38,7 +38,7 @@ android { buildConfigField "String[]", "DEFAULT_API_KEYS", "{null}" } - buildConfigField "String", "BASE_URL", "\"https://api.openweathermap.org/data/2.5/\"" + buildConfigField "String", "BASE_URL", "\"https://api.openweathermap.org/data/3.0/\"" javaCompileOptions { annotationProcessorOptions { diff --git a/app/src/main/java/org/secuso/privacyfriendlyweather/activities/ForecastCityActivity.java b/app/src/main/java/org/secuso/privacyfriendlyweather/activities/ForecastCityActivity.java index dc5d09bd..3cb16832 100644 --- a/app/src/main/java/org/secuso/privacyfriendlyweather/activities/ForecastCityActivity.java +++ b/app/src/main/java/org/secuso/privacyfriendlyweather/activities/ForecastCityActivity.java @@ -1,7 +1,9 @@ package org.secuso.privacyfriendlyweather.activities; +import android.app.AlertDialog; import android.content.Intent; import android.os.Bundle; +import android.preference.PreferenceManager; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -19,6 +21,7 @@ import org.secuso.privacyfriendlyweather.database.data.CurrentWeatherData; import org.secuso.privacyfriendlyweather.database.data.Forecast; import org.secuso.privacyfriendlyweather.database.data.WeekForecast; +import org.secuso.privacyfriendlyweather.preferences.AppPreferencesManager; import org.secuso.privacyfriendlyweather.ui.updater.IUpdateableCityUI; import org.secuso.privacyfriendlyweather.ui.updater.ViewUpdater; import org.secuso.privacyfriendlyweather.ui.viewPager.WeatherPagerAdapter; @@ -27,6 +30,7 @@ public class ForecastCityActivity extends BaseActivity implements IUpdateableCityUI { private WeatherPagerAdapter pagerAdapter; + private AppPreferencesManager appPreferencesManager; private MenuItem refreshActionButton; private MenuItem rainviewerButton; @@ -73,7 +77,6 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_forecast_city); overridePendingTransition(0, 0); - //cityId = getIntent().getIntExtra("cityId", -1); //done in onResume initResources(); @@ -113,6 +116,18 @@ public void onPageScrollStateChanged(int state) {} } } + @Override + protected void onPostCreate(Bundle savedInstanceState) { + super.onPostCreate(savedInstanceState); + + if (appPreferencesManager.getOWMApiKey(this) == null) { + new AlertDialog.Builder(this).setTitle("") + .setMessage("Get your own API-Key yo") + .setNeutralButton(android.R.string.ok, null) + .show(); + } + } + public void updatePageTitle() { if (getSupportActionBar() != null && pagerAdapter.getCount() > 0) { getSupportActionBar().setTitle(pagerAdapter.getPageTitleForActionBar(viewPager.getCurrentItem())); @@ -129,6 +144,7 @@ private void initResources() { viewPager = findViewById(R.id.viewPager); pagerAdapter = new WeatherPagerAdapter(this, getSupportFragmentManager()); noCityText = findViewById(R.id.noCitySelectedText); + appPreferencesManager = new AppPreferencesManager(PreferenceManager.getDefaultSharedPreferences(this)); } @Override diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 444f69a9..d1b619a8 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -204,4 +204,6 @@ Die Wetter-App ermöglicht Backups mit unserer Privacy Friendly Backup-App. Um diese Funktionalität zu aktivieren, wird die Berechtigung zum Verbinden mit Diensten benötigt. Wetterdaten zur Verfügung gestellt von: "Das OpenWeatherMap Logo ist lizensiert unter\nCreative Commons BY-SA." + App Deprecation and API changes + Am 1. Juni 2024 deaktiviert Open Weather seine alte API, daher sind die alten API-Schlüssel nicht mehr verwendbar. diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index c39053f0..9704b963 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -203,4 +203,6 @@ L\'app meteo abilita i backup con la nostra app Privacy Friendly Backup. Per abilitare questa funzionalità, è necessario il permesso di legarsi ai servizi. Dati meteo forniti da: "Il logo di OpenWeatherMap è concesso in licenza sotto\nla licenza Creative Commons BY-SA." + Deprecazione dell\'app e modifiche all\'API + Dal 1° giugno 2024 Open Weather disattiva la sua vecchia API, pertanto le vecchie chiavi API non sono più utilizzabili. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 418984f5..d388c7e4 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -257,5 +257,7 @@ The weather app enables backups with our Privacy Friendly Backup app. To enable this functionality, the permission to bind with services is needed. Weather data provided by: "OpenWeatherMap logo is licensed under\nCreative Commons BY-SA license." + アプリの非推奨と API の変更 + 2024 年 6 月 1 日に、Open Weather は古い API を非アクティブ化するため、古い API キーは使用できなくなります。 diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 35ea47b3..0ab88d80 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -203,4 +203,6 @@ A aplicação meteorológica permite cópias de segurança com a nossa aplicação Privacy Friendly Backup. Para activar esta funcionalidade, é necessária a permissão de ligação com serviços. Dados meteorológicos fornecidos por: "O logótipo OpenWeatherMap está licenciado sob\nCreative Commons BY-SA licença." + Descontinuação de aplicativos e alterações de API + Em 1º de junho de 2024, o Open Weather desativa sua API antiga, portanto, as chaves da API antigas não podem mais ser usadas. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ad904020..b5465542 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -174,6 +174,14 @@ Close Add + App Deprecation and API changes + + On 1st June, 2024 Open Weather deactivates its old API, therefore the old api keys are not usable anymore. + As the Privacy Friendly Weather App is deprecated, we won\'t adjust to any api changes and the app won\'t function as expected. + + If you want to continue using this app, get your own api key by following the OpenWeather instruction. + After obtaining your api key, set it in the settings. + Clear Sky From 38eb05a960b2d05481f2b5defc92f17daed651d3 Mon Sep 17 00:00:00 2001 From: Patrick Schneider Date: Mon, 27 May 2024 16:07:50 +0200 Subject: [PATCH 3/5] [fixes] fixes deprecation popup and api keys. --- .../activities/ForecastCityActivity.java | 13 ++++++---- .../preferences/AppPreferencesManager.java | 26 +------------------ app/src/main/res/values-de/strings.xml | 10 +++++-- app/src/main/res/values-it/strings.xml | 3 ++- app/src/main/res/values-ja/strings.xml | 8 +++++- app/src/main/res/values-pt/strings.xml | 8 +++++- 6 files changed, 33 insertions(+), 35 deletions(-) diff --git a/app/src/main/java/org/secuso/privacyfriendlyweather/activities/ForecastCityActivity.java b/app/src/main/java/org/secuso/privacyfriendlyweather/activities/ForecastCityActivity.java index 3cb16832..f5f96602 100644 --- a/app/src/main/java/org/secuso/privacyfriendlyweather/activities/ForecastCityActivity.java +++ b/app/src/main/java/org/secuso/privacyfriendlyweather/activities/ForecastCityActivity.java @@ -4,6 +4,7 @@ import android.content.Intent; import android.os.Bundle; import android.preference.PreferenceManager; +import android.text.method.LinkMovementMethod; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -120,11 +121,13 @@ public void onPageScrollStateChanged(int state) {} protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); - if (appPreferencesManager.getOWMApiKey(this) == null) { - new AlertDialog.Builder(this).setTitle("") - .setMessage("Get your own API-Key yo") - .setNeutralButton(android.R.string.ok, null) - .show(); + if (appPreferencesManager.getOWMApiKey(this).equals(getString(R.string.settings_API_key_default))) { + TextView textView = new AlertDialog.Builder(this).setTitle(getString(R.string.dialog_app_api_deprecation_title)) + .setMessage(R.string.dialog_app_api_deprecation_description) + .setNeutralButton(android.R.string.ok, null) + .show() + .findViewById(android.R.id.message); + textView.setMovementMethod(LinkMovementMethod.getInstance()); } } diff --git a/app/src/main/java/org/secuso/privacyfriendlyweather/preferences/AppPreferencesManager.java b/app/src/main/java/org/secuso/privacyfriendlyweather/preferences/AppPreferencesManager.java index f5af8cfb..c3c96da0 100644 --- a/app/src/main/java/org/secuso/privacyfriendlyweather/preferences/AppPreferencesManager.java +++ b/app/src/main/java/org/secuso/privacyfriendlyweather/preferences/AppPreferencesManager.java @@ -248,30 +248,6 @@ public boolean usingPersonalKey(Context context) { } public String getOWMApiKey(Context context) { - String noKeyString = context.getString(R.string.settings_API_key_default); - String prefValue = preferences.getString("API_key_value", noKeyString); - if (!prefValue.equals(noKeyString)) { - return prefValue; - } else { - String availableKeysString = preferences.getString("availble_keys", ""); - List availableKeys = new ArrayList<>(Arrays.asList(availableKeysString.split(","))); - - SharedPreferences.Editor editor = preferences.edit(); - - if(availableKeys.isEmpty() || availableKeysString.isEmpty()) { - // fill list with shuffled keys - availableKeys = new ArrayList<>(Arrays.asList(BuildConfig.DEFAULT_API_KEYS)); - Collections.shuffle(availableKeys); - } - - // get result and remove from possible keys - String result = availableKeys.get(0); - availableKeys.remove(result); - editor.putString("availble_keys", String.join(",", availableKeys)).commit(); - - return result; - } + return preferences.getString("API_key_value", context.getString(R.string.settings_API_key_default)); } - - } diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index d1b619a8..f311a81a 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -204,6 +204,12 @@ Die Wetter-App ermöglicht Backups mit unserer Privacy Friendly Backup-App. Um diese Funktionalität zu aktivieren, wird die Berechtigung zum Verbinden mit Diensten benötigt. Wetterdaten zur Verfügung gestellt von: "Das OpenWeatherMap Logo ist lizensiert unter\nCreative Commons BY-SA." - App Deprecation and API changes - Am 1. Juni 2024 deaktiviert Open Weather seine alte API, daher sind die alten API-Schlüssel nicht mehr verwendbar. + App-Veraltung und API-Änderungen + + Am 1. Juni 2024 deaktiviert Open Weather seine alte API, daher sind die alten API-Schlüssel nicht mehr verwendbar. + Da die Privacy Friendly Weather App veraltet ist, werden wir uns nicht an API-Änderungen anpassen und die App wird nicht wie erwartet funktionieren. + + Wenn Sie diese App weiterhin verwenden möchten, besorgen Sie sich Ihren eigenen API-Schlüssel, indem Sie der OpenWeather-Anweisung folgen. + Nachdem Sie Ihren API-Schlüssel erhalten haben, legen Sie ihn in den Einstellungen fest. + diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 9704b963..1a521d2e 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -204,5 +204,6 @@ Dati meteo forniti da: "Il logo di OpenWeatherMap è concesso in licenza sotto\nla licenza Creative Commons BY-SA." Deprecazione dell\'app e modifiche all\'API - Dal 1° giugno 2024 Open Weather disattiva la sua vecchia API, pertanto le vecchie chiavi API non sono più utilizzabili. + Dal 1 giugno 2024 Open Weather disattiva la sua vecchia API, pertanto le vecchie chiavi API non sono più utilizzabili. \n Poiché l\'app Meteo rispettosa della privacy è deprecata, non ci adatteremo ad alcuna modifica dell\'API e l\'app non funzionerà come previsto. Se vuoi continuare a utilizzare questa app, ottieni la tua chiave API seguendo le istruzioni OpenWeather. Dopo aver ottenuto la chiave API, impostala nelle impostazioni. + diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index d388c7e4..5ef84e53 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -258,6 +258,12 @@ Weather data provided by: "OpenWeatherMap logo is licensed under\nCreative Commons BY-SA license." アプリの非推奨と API の変更 - 2024 年 6 月 1 日に、Open Weather は古い API を非アクティブ化するため、古い API キーは使用できなくなります。 + + 2024 年 6 月 1 日に、Open Weather は古い API を非アクティブ化するため、古い API キーは使用できなくなります。 + プライバシー フレンドリーな天気アプリは廃止されるため、API の変更に対応できず、アプリは期待どおりに機能しません。 + + このアプリを引き続き使用する場合は、OpenWeather の手順に従って独自の API キーを取得してください。 + APIキーを取得したら、設定でAPIキーを設定します。 + diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 0ab88d80..0d12e2ef 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -204,5 +204,11 @@ Dados meteorológicos fornecidos por: "O logótipo OpenWeatherMap está licenciado sob\nCreative Commons BY-SA licença." Descontinuação de aplicativos e alterações de API - Em 1º de junho de 2024, o Open Weather desativa sua API antiga, portanto, as chaves da API antigas não podem mais ser usadas. + + Em 1º de junho de 2024, o Open Weather desativa sua API antiga, portanto, as chaves da API antigas não podem mais ser usadas. + Como o aplicativo Privacy Friendly Weather está obsoleto, não nos ajustaremos a nenhuma alteração na API e o aplicativo não funcionará conforme o esperado. + + Se você quiser continuar usando este aplicativo, obtenha sua própria chave de API seguindo as instruções do OpenWeather. + Depois de obter sua chave API, defina-a nas configurações. + From a0c4193f74c4d4760b1498cd0adb2b005ff73859 Mon Sep 17 00:00:00 2001 From: Patrick Schneider Date: Mon, 27 May 2024 16:09:13 +0200 Subject: [PATCH 4/5] [update] updates app version. --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c48e284e..7e12ac28 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,8 +11,8 @@ android { applicationId "org.secuso.privacyfriendlyweather" minSdkVersion 17 targetSdkVersion 34 - versionCode 17 - versionName "3.1.1" + versionCode 18 + versionName "3.1.2" if (keysFile.exists()) { def keys = new Properties() From ad51832958685e433bb02a4f4c88fa2c299e15a8 Mon Sep 17 00:00:00 2001 From: Patrick Schneider Date: Mon, 27 May 2024 16:35:38 +0200 Subject: [PATCH 5/5] [fix] fixes build process. --- .github/workflows/ci.yml | 8 ++++---- app/build.gradle | 9 +++++++++ .../privacyfriendlyweather/PFAWeatherApplication.java | 4 ++-- .../privacyfriendlyweather/widget/WeatherWidget.java | 7 +------ .../widget/WeatherWidgetFiveDayForecast.java | 7 +------ .../widget/WeatherWidgetOneDayForecast.java | 8 ++------ .../widget/WeatherWidgetThreeDayForecast.java | 7 +------ build.gradle | 2 +- gradle.properties | 4 +++- gradle/wrapper/gradle-wrapper.properties | 2 +- 10 files changed, 25 insertions(+), 33 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5a60fa75..6c385cf0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,10 +10,10 @@ jobs: - uses: actions/checkout@v2 with: submodules: 'recursive' - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v1 with: - java-version: 11 + java-version: 17 - name: Run unit tests run: ./gradlew test - name: Android Test Report @@ -46,9 +46,9 @@ jobs: - uses: actions/checkout@v2 with: submodules: 'recursive' - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v1 with: - java-version: 11 + java-version: 17 - name: Build debug APK run: ./gradlew assembleDebug diff --git a/app/build.gradle b/app/build.gradle index 7e12ac28..44c12b19 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,6 +5,7 @@ def keysFile = rootProject.file('keys.properties') android { compileSdk 34 + namespace "org.secuso.privacyfriendlyweather" defaultConfig { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -13,6 +14,7 @@ android { targetSdkVersion 34 versionCode 18 versionName "3.1.2" + multiDexEnabled = true if (keysFile.exists()) { def keys = new Properties() @@ -66,6 +68,10 @@ android { } } + buildFeatures { + buildConfig true + } + buildTypes { release { minifyEnabled false @@ -109,4 +115,7 @@ dependencies { implementation "androidx.work:work-runtime:$work_version" implementation "androidx.work:work-runtime-ktx:$work_version" androidTestImplementation "androidx.work:work-testing:$work_version" + + def multidex_version = "2.0.1" + implementation("androidx.multidex:multidex:$multidex_version") } diff --git a/app/src/main/java/org/secuso/privacyfriendlyweather/PFAWeatherApplication.java b/app/src/main/java/org/secuso/privacyfriendlyweather/PFAWeatherApplication.java index 3c3f5ee0..57395cc4 100644 --- a/app/src/main/java/org/secuso/privacyfriendlyweather/PFAWeatherApplication.java +++ b/app/src/main/java/org/secuso/privacyfriendlyweather/PFAWeatherApplication.java @@ -1,9 +1,9 @@ package org.secuso.privacyfriendlyweather; -import android.app.Application; import android.util.Log; import androidx.annotation.NonNull; +import androidx.multidex.MultiDexApplication; import androidx.work.Configuration; import org.secuso.privacyfriendlybackup.api.pfa.BackupManager; @@ -11,7 +11,7 @@ import org.secuso.privacyfriendlyweather.backup.BackupRestorer; -public class PFAWeatherApplication extends Application implements Configuration.Provider { +public class PFAWeatherApplication extends MultiDexApplication implements Configuration.Provider { @Override public void onCreate() { diff --git a/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidget.java b/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidget.java index 95f0653c..51b80c4a 100644 --- a/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidget.java +++ b/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidget.java @@ -85,12 +85,7 @@ public static void updateView(Context context, AppWidgetManager appWidgetManager Intent intent = new Intent(context, ForecastCityActivity.class); intent.putExtra("cityId", city.getCityId()); - PendingIntent pendingIntent; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { - pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_IMMUTABLE); - } else { - pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, 0); - } + PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_IMMUTABLE); views.setOnClickPendingIntent(R.id.widget1day_layout, pendingIntent); diff --git a/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetFiveDayForecast.java b/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetFiveDayForecast.java index 33e90e46..9604af70 100644 --- a/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetFiveDayForecast.java +++ b/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetFiveDayForecast.java @@ -148,12 +148,7 @@ public static void updateView(Context context, AppWidgetManager appWidgetManager Intent intent = new Intent(context, ForecastCityActivity.class); intent.putExtra("cityId", city.getCityId()); - PendingIntent pendingIntent; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { - pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_IMMUTABLE); - } else { - pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, 0); - } + PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_IMMUTABLE); views.setOnClickPendingIntent(R.id.widget5day_layout, pendingIntent); // Instruct the widget manager to update the widget diff --git a/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetOneDayForecast.java b/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetOneDayForecast.java index 44341e16..5e2d57ed 100644 --- a/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetOneDayForecast.java +++ b/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetOneDayForecast.java @@ -133,12 +133,8 @@ public static void updateView(Context context, AppWidgetManager appWidgetManager Intent intent = new Intent(context, ForecastCityActivity.class); intent.putExtra("cityId", city.getCityId()); - PendingIntent pendingIntent; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { - pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_IMMUTABLE); - } else { - pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, 0); - } + PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_IMMUTABLE); + views.setOnClickPendingIntent(R.id.widget1day_layout, pendingIntent); // Instruct the widget manager to update the widget diff --git a/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetThreeDayForecast.java b/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetThreeDayForecast.java index 4dba3fdd..ebcbbeef 100644 --- a/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetThreeDayForecast.java +++ b/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetThreeDayForecast.java @@ -137,12 +137,7 @@ public static void updateView(Context context, AppWidgetManager appWidgetManager Intent intent = new Intent(context, ForecastCityActivity.class); intent.putExtra("cityId", city.getCityId()); - PendingIntent pendingIntent; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { - pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_IMMUTABLE); - } else { - pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, 0); - } + PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_IMMUTABLE); views.setOnClickPendingIntent(R.id.widget3day_layout, pendingIntent); diff --git a/build.gradle b/build.gradle index 7ccfe1d9..174e17eb 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ buildscript { } } dependencies { - classpath 'com.android.tools.build:gradle:7.2.1' + classpath 'com.android.tools.build:gradle:8.1.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong diff --git a/gradle.properties b/gradle.properties index 83d81f60..6fe2f0ee 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,4 +14,6 @@ # org.gradle.parallel=true org.gradle.jvmargs=-Xmx2048M android.useAndroidX=true -android.enableJetifier=true \ No newline at end of file +android.enableJetifier=true +android.nonTransitiveRClass=false +android.nonFinalResIds=false \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 67a932e9..786627ef 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip