diff --git a/README.md b/README.md index 68654b18..f452a310 100644 --- a/README.md +++ b/README.md @@ -45,8 +45,7 @@ However, larger and new features will be developed in their own branch. Code structure ============== -Starting with version 2.3.0, Transdroid is developed in Android Studio, fully integrating with the Gradle build system. -It is (since version 2.5.21) compiled against Android 12 (API level 31) and (since version 2.2.0) supporting Android ICS (API level 15) and up only. +Transdroid is (since version 2.5.23) compiled against Android 14 (API level 34) and (since version 2.5.23) supporting Android 5 (API level 21) and up only. To support lite (Transdrone, specially for the Play Store) and full (Transdroid) versions of the app, build flavours are defined in gradle, which contain version-specific resources. Dependencies are managed via JCentral et al. in the app's build.gradle file. @@ -59,7 +58,7 @@ Contributions by various others (see commit log). License ======= - Copyright 2010-2022 Eric Kok et al. + Copyright 2010-2024 Eric Kok et al. Transdroid is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -108,9 +107,6 @@ Some code/libraries/resources are used in the project: * [Material Dialogs](https://github.com/afollestad/material-dialogs) Aidan Follestad Apache License, Version 2.0 -* [Android-Job](https://github.com/evernote/android-job) - Evernote Corporation - Apache License, Version 2.0 * [android-ColorPickerPreference](https://github.com/attenzione/android-ColorPickerPreference) Daniel Nilsson and Sergey Margaritov Apache License, Version 2.0 diff --git a/app/build.gradle b/app/build.gradle index f5ae13a4..2e40e769 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 31 + compileSdk 34 defaultConfig { - minSdkVersion 15 - targetSdkVersion 31 - versionCode 242 - versionName '2.5.22' + minSdkVersion 21 + targetSdkVersion 34 + versionCode 244 + versionName '2.5.24' javaCompileOptions { annotationProcessorOptions { @@ -80,31 +80,32 @@ android { dependencies { // Android support - implementation 'androidx.appcompat:appcompat:1.2.0' - implementation 'androidx.preference:preference:1.1.1' + implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.preference:preference:1.2.1' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' - implementation 'com.google.android.material:material:1.3.0' + implementation 'com.google.android.material:material:1.10.0' // Other - implementation 'org.androidannotations:androidannotations-api:4.7.0' - implementation 'org.androidannotations:ormlite-api:4.7.0' - implementation 'com.j256.ormlite:ormlite-core:5.1' - implementation 'com.j256.ormlite:ormlite-android:5.1' + implementation 'org.androidannotations:androidannotations-api:4.8.0' + implementation 'org.androidannotations:ormlite-api:4.8.0' + implementation 'com.j256.ormlite:ormlite-android:6.1' implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' implementation 'com.getbase:floatingactionbutton:1.10.1' implementation 'com.nispok:snackbar:2.11.0' - implementation 'org.apache.openjpa:openjpa-lib:3.1.1' + implementation 'org.apache.openjpa:openjpa-lib:3.2.2' implementation 'net.iharder:base64:2.3.9' implementation('com.github.afollestad.material-dialogs:core:0.9.6.0@aar') { transitive = true } - implementation 'com.evernote:android-job:1.2.6' + implementation 'androidx.work:work-runtime:2.9.0' + implementation "androidx.lifecycle:lifecycle-viewmodel:2.6.2" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2" + + annotationProcessor 'org.androidannotations:androidannotations:4.8.0' + annotationProcessor 'org.androidannotations:ormlite:4.8.0' // Copied From androidSdkPath/platforms/android-31/optional/org.apache.http.legacy.jar // Using it as a compileOnly so this helps while developing, but is not compiled into the final // app, see https://developer.android.com/studio/build/dependencies#dependency_configurations compileOnly files('libs/org.apache.http.legacy.jar') - - annotationProcessor 'org.androidannotations:androidannotations:4.7.0' - annotationProcessor 'org.androidannotations:ormlite:4.7.0' } diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index e9caf635..6b6b4a48 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -1 +1,4 @@ -dontobfuscate + +-keep class org.transdroid.core.gui.log.ErrorLogEntry { *; } +-dontwarn javax.persistence.** diff --git a/app/src/full/res/values/bools.xml b/app/src/full/res/values/bools.xml index 68b5601f..9970db6c 100644 --- a/app/src/full/res/values/bools.xml +++ b/app/src/full/res/values/bools.xml @@ -1,5 +1,5 @@ - - + + + + + + + autoRefreshTask; - private String awaitingAddLocalFile; - private String awaitingAddTitle; /** * Handles item selections on the dedicated list of filter items */ @@ -395,7 +393,6 @@ public class TorrentsActivity extends AppCompatActivity implements TorrentTasksE } } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) public void startAutoRefresh() { // Check if already running if (autoRefreshTask != null || stopRefresh || systemSettings.getRefreshIntervalMilliseconds() == 0) { @@ -751,14 +748,6 @@ public class TorrentsActivity extends AppCompatActivity implements TorrentTasksE return true; } - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - if (awaitingAddLocalFile != null && awaitingAddTitle != null && - Boolean.TRUE.equals(navigationHelper.handleTorrentReadPermissionResult(requestCode, grantResults))) { - addTorrentByFile(awaitingAddLocalFile, awaitingAddTitle); - } - } - @Click(R.id.addmenu_link_button) protected void startUrlEntryDialog() { addmenuButton.collapse(); @@ -1026,12 +1015,6 @@ public class TorrentsActivity extends AppCompatActivity implements TorrentTasksE @Background protected void addTorrentByFile(String localFile, String title) { - if (!navigationHelper.checkTorrentReadPermission(this)) { - // No read permission yet (which we get the result of in onRequestPermissionsResult) - awaitingAddLocalFile = localFile; - awaitingAddTitle = title; - return; - } DaemonTaskResult result = AddByFileTask.create(currentConnection, localFile).execute(log); if (result instanceof DaemonTaskSuccessResult) { onTaskSucceeded((DaemonTaskSuccessResult) result, getString(R.string.result_added, title)); diff --git a/app/src/main/java/org/transdroid/core/gui/TorrentsFragment.java b/app/src/main/java/org/transdroid/core/gui/TorrentsFragment.java index 26c5e3d9..9ff52029 100644 --- a/app/src/main/java/org/transdroid/core/gui/TorrentsFragment.java +++ b/app/src/main/java/org/transdroid/core/gui/TorrentsFragment.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/TransdroidApp.java b/app/src/main/java/org/transdroid/core/gui/TransdroidApp.java index af0d0c29..4cfe987c 100644 --- a/app/src/main/java/org/transdroid/core/gui/TransdroidApp.java +++ b/app/src/main/java/org/transdroid/core/gui/TransdroidApp.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,27 +18,21 @@ package org.transdroid.core.gui; import android.app.Application; -import com.evernote.android.job.JobConfig; -import com.evernote.android.job.JobManager; +import androidx.annotation.NonNull; +import androidx.work.Configuration; -import org.androidannotations.annotations.Bean; import org.androidannotations.annotations.EApplication; import org.transdroid.core.gui.log.Log; -import org.transdroid.core.service.ScheduledJobCreator; @EApplication -public class TransdroidApp extends Application { - - @Bean - protected Log log; +public class TransdroidApp extends Application implements Configuration.Provider { + @NonNull @Override - public void onCreate() { - super.onCreate(); - - // Configure Android-Job - JobConfig.addLogger((priority, tag, message, t) -> log.d(tag, message)); - JobManager.create(this).addJobCreator(new ScheduledJobCreator()); + public Configuration getWorkManagerConfiguration() { + return new Configuration.Builder() + .setMinimumLoggingLevel(android.util.Log.DEBUG) + .build(); } } diff --git a/app/src/main/java/org/transdroid/core/gui/lists/DetailsAdapter.java b/app/src/main/java/org/transdroid/core/gui/lists/DetailsAdapter.java index d612bc9f..b713956a 100644 --- a/app/src/main/java/org/transdroid/core/gui/lists/DetailsAdapter.java +++ b/app/src/main/java/org/transdroid/core/gui/lists/DetailsAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/lists/LocalTorrent.java b/app/src/main/java/org/transdroid/core/gui/lists/LocalTorrent.java index c6c03a8d..023e60dd 100644 --- a/app/src/main/java/org/transdroid/core/gui/lists/LocalTorrent.java +++ b/app/src/main/java/org/transdroid/core/gui/lists/LocalTorrent.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/lists/MergeAdapter.java b/app/src/main/java/org/transdroid/core/gui/lists/MergeAdapter.java index 254361f2..dcb7873e 100644 --- a/app/src/main/java/org/transdroid/core/gui/lists/MergeAdapter.java +++ b/app/src/main/java/org/transdroid/core/gui/lists/MergeAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/lists/SimpleListItem.java b/app/src/main/java/org/transdroid/core/gui/lists/SimpleListItem.java index 747824fc..3a8b5774 100644 --- a/app/src/main/java/org/transdroid/core/gui/lists/SimpleListItem.java +++ b/app/src/main/java/org/transdroid/core/gui/lists/SimpleListItem.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/lists/SimpleListItemAdapter.java b/app/src/main/java/org/transdroid/core/gui/lists/SimpleListItemAdapter.java index 2a023abb..3221b9dc 100644 --- a/app/src/main/java/org/transdroid/core/gui/lists/SimpleListItemAdapter.java +++ b/app/src/main/java/org/transdroid/core/gui/lists/SimpleListItemAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/lists/SimpleListItemSpinnerAdapter.java b/app/src/main/java/org/transdroid/core/gui/lists/SimpleListItemSpinnerAdapter.java index 4000e710..afe9b91b 100644 --- a/app/src/main/java/org/transdroid/core/gui/lists/SimpleListItemSpinnerAdapter.java +++ b/app/src/main/java/org/transdroid/core/gui/lists/SimpleListItemSpinnerAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/lists/SimpleListItemView.java b/app/src/main/java/org/transdroid/core/gui/lists/SimpleListItemView.java index b6d4f243..6f3442f7 100644 --- a/app/src/main/java/org/transdroid/core/gui/lists/SimpleListItemView.java +++ b/app/src/main/java/org/transdroid/core/gui/lists/SimpleListItemView.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/lists/SortByListItem.java b/app/src/main/java/org/transdroid/core/gui/lists/SortByListItem.java index b2939d14..7289aab8 100644 --- a/app/src/main/java/org/transdroid/core/gui/lists/SortByListItem.java +++ b/app/src/main/java/org/transdroid/core/gui/lists/SortByListItem.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/lists/TorrentDetailsView.java b/app/src/main/java/org/transdroid/core/gui/lists/TorrentDetailsView.java index 5dbf27b4..414f8c14 100644 --- a/app/src/main/java/org/transdroid/core/gui/lists/TorrentDetailsView.java +++ b/app/src/main/java/org/transdroid/core/gui/lists/TorrentDetailsView.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/lists/TorrentFilePriorityLayout.java b/app/src/main/java/org/transdroid/core/gui/lists/TorrentFilePriorityLayout.java index a87e75e7..1570dd63 100644 --- a/app/src/main/java/org/transdroid/core/gui/lists/TorrentFilePriorityLayout.java +++ b/app/src/main/java/org/transdroid/core/gui/lists/TorrentFilePriorityLayout.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/lists/TorrentFileView.java b/app/src/main/java/org/transdroid/core/gui/lists/TorrentFileView.java index 6a7632cf..cb32b6cd 100644 --- a/app/src/main/java/org/transdroid/core/gui/lists/TorrentFileView.java +++ b/app/src/main/java/org/transdroid/core/gui/lists/TorrentFileView.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/lists/TorrentProgressBar.java b/app/src/main/java/org/transdroid/core/gui/lists/TorrentProgressBar.java index 7dec796b..0d18cef2 100644 --- a/app/src/main/java/org/transdroid/core/gui/lists/TorrentProgressBar.java +++ b/app/src/main/java/org/transdroid/core/gui/lists/TorrentProgressBar.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/lists/TorrentStatusLayout.java b/app/src/main/java/org/transdroid/core/gui/lists/TorrentStatusLayout.java index 340cfe6b..2adf16cd 100644 --- a/app/src/main/java/org/transdroid/core/gui/lists/TorrentStatusLayout.java +++ b/app/src/main/java/org/transdroid/core/gui/lists/TorrentStatusLayout.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/lists/TorrentView.java b/app/src/main/java/org/transdroid/core/gui/lists/TorrentView.java index 4fb07774..40b33faf 100644 --- a/app/src/main/java/org/transdroid/core/gui/lists/TorrentView.java +++ b/app/src/main/java/org/transdroid/core/gui/lists/TorrentView.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/lists/TorrentsAdapter.java b/app/src/main/java/org/transdroid/core/gui/lists/TorrentsAdapter.java index 02381ca2..bba34281 100644 --- a/app/src/main/java/org/transdroid/core/gui/lists/TorrentsAdapter.java +++ b/app/src/main/java/org/transdroid/core/gui/lists/TorrentsAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/lists/ViewHolderAdapter.java b/app/src/main/java/org/transdroid/core/gui/lists/ViewHolderAdapter.java index 77ce019a..b6b4aa7e 100644 --- a/app/src/main/java/org/transdroid/core/gui/lists/ViewHolderAdapter.java +++ b/app/src/main/java/org/transdroid/core/gui/lists/ViewHolderAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/log/DatabaseHelper.java b/app/src/main/java/org/transdroid/core/gui/log/DatabaseHelper.java index 6bd7e965..b9f9f500 100644 --- a/app/src/main/java/org/transdroid/core/gui/log/DatabaseHelper.java +++ b/app/src/main/java/org/transdroid/core/gui/log/DatabaseHelper.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/log/ErrorLogEntry.java b/app/src/main/java/org/transdroid/core/gui/log/ErrorLogEntry.java index bf28ec82..eaf405a1 100644 --- a/app/src/main/java/org/transdroid/core/gui/log/ErrorLogEntry.java +++ b/app/src/main/java/org/transdroid/core/gui/log/ErrorLogEntry.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/log/ErrorLogSender.java b/app/src/main/java/org/transdroid/core/gui/log/ErrorLogSender.java index 817f566a..0f5db37f 100644 --- a/app/src/main/java/org/transdroid/core/gui/log/ErrorLogSender.java +++ b/app/src/main/java/org/transdroid/core/gui/log/ErrorLogSender.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/log/Log.java b/app/src/main/java/org/transdroid/core/gui/log/Log.java index 9c3669ea..c48c2aed 100644 --- a/app/src/main/java/org/transdroid/core/gui/log/Log.java +++ b/app/src/main/java/org/transdroid/core/gui/log/Log.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/log/LogUncaughtExceptionHandler.java b/app/src/main/java/org/transdroid/core/gui/log/LogUncaughtExceptionHandler.java index 714d1738..d5fa0430 100644 --- a/app/src/main/java/org/transdroid/core/gui/log/LogUncaughtExceptionHandler.java +++ b/app/src/main/java/org/transdroid/core/gui/log/LogUncaughtExceptionHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/navigation/DialogHelper.java b/app/src/main/java/org/transdroid/core/gui/navigation/DialogHelper.java index a8deff86..693c0311 100644 --- a/app/src/main/java/org/transdroid/core/gui/navigation/DialogHelper.java +++ b/app/src/main/java/org/transdroid/core/gui/navigation/DialogHelper.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/navigation/FilterListAdapter.java b/app/src/main/java/org/transdroid/core/gui/navigation/FilterListAdapter.java index 22f02b73..730bef90 100644 --- a/app/src/main/java/org/transdroid/core/gui/navigation/FilterListAdapter.java +++ b/app/src/main/java/org/transdroid/core/gui/navigation/FilterListAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/navigation/FilterListItemAdapter.java b/app/src/main/java/org/transdroid/core/gui/navigation/FilterListItemAdapter.java index 6ba17f95..acb1c73a 100644 --- a/app/src/main/java/org/transdroid/core/gui/navigation/FilterListItemAdapter.java +++ b/app/src/main/java/org/transdroid/core/gui/navigation/FilterListItemAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/navigation/FilterListItemView.java b/app/src/main/java/org/transdroid/core/gui/navigation/FilterListItemView.java index 6c72cae8..89f6af62 100644 --- a/app/src/main/java/org/transdroid/core/gui/navigation/FilterListItemView.java +++ b/app/src/main/java/org/transdroid/core/gui/navigation/FilterListItemView.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/navigation/FilterSeparatorView.java b/app/src/main/java/org/transdroid/core/gui/navigation/FilterSeparatorView.java index d04b3a08..a46aeac7 100644 --- a/app/src/main/java/org/transdroid/core/gui/navigation/FilterSeparatorView.java +++ b/app/src/main/java/org/transdroid/core/gui/navigation/FilterSeparatorView.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/navigation/Label.java b/app/src/main/java/org/transdroid/core/gui/navigation/Label.java index adab87e7..614f2aff 100644 --- a/app/src/main/java/org/transdroid/core/gui/navigation/Label.java +++ b/app/src/main/java/org/transdroid/core/gui/navigation/Label.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/navigation/NavigationFilter.java b/app/src/main/java/org/transdroid/core/gui/navigation/NavigationFilter.java index 8479a852..55f5a40b 100644 --- a/app/src/main/java/org/transdroid/core/gui/navigation/NavigationFilter.java +++ b/app/src/main/java/org/transdroid/core/gui/navigation/NavigationFilter.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/navigation/NavigationHelper.java b/app/src/main/java/org/transdroid/core/gui/navigation/NavigationHelper.java index e1dd374a..ad4032ae 100644 --- a/app/src/main/java/org/transdroid/core/gui/navigation/NavigationHelper.java +++ b/app/src/main/java/org/transdroid/core/gui/navigation/NavigationHelper.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,14 +18,12 @@ package org.transdroid.core.gui.navigation; import android.Manifest; import android.annotation.SuppressLint; -import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; -import android.os.Build; import android.text.Spannable; import android.text.SpannableString; import android.text.style.TypefaceSpan; @@ -60,9 +58,7 @@ import java.util.List; @EBean public class NavigationHelper { - private static final int REQUEST_TORRENT_READ_PERMISSION = 0; - private static final int REQUEST_SETTINGS_READ_PERMISSION = 1; - private static final int REQUEST_SETTINGS_WRITE_PERMISSION = 2; + private static final int REQUEST_NOTIFICATIONS_PERMISSION = 0; private static ImageLoader imageCache; @RootContext @@ -134,25 +130,11 @@ public class NavigationHelper { return null; } - @TargetApi(Build.VERSION_CODES.JELLY_BEAN) - public boolean checkTorrentReadPermission(final Activity activity) { - return Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT || - checkPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE, REQUEST_TORRENT_READ_PERMISSION); + public boolean checkOrRequestNotificationPermission(final Activity activity) { + return checkPermission(activity, Manifest.permission.POST_NOTIFICATIONS, REQUEST_NOTIFICATIONS_PERMISSION, R.string.permission_notifications); } - @TargetApi(Build.VERSION_CODES.JELLY_BEAN) - public boolean checkSettingsReadPermission(final Activity activity) { - return Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT || - checkPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE, REQUEST_SETTINGS_READ_PERMISSION); - } - - @TargetApi(Build.VERSION_CODES.JELLY_BEAN) - public boolean checkSettingsWritePermission(final Activity activity) { - return Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT || - checkPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE, REQUEST_SETTINGS_WRITE_PERMISSION); - } - - private boolean checkPermission(final Activity activity, final String permission, final int requestCode) { + private boolean checkPermission(final Activity activity, final String permission, final int requestCode, final int explainer) { if (hasPermission(permission)) // Permission already granted return true; @@ -160,43 +142,27 @@ public class NavigationHelper { // Never asked again: show a dialog with an explanation activity.runOnUiThread(() -> new AlertDialog.Builder(context) - .setMessage(R.string.permission_readtorrent) + .setMessage(explainer) .setPositiveButton(android.R.string.ok, (dialog, which) -> ActivityCompat.requestPermissions(activity, new String[]{permission}, requestCode)) .show()); return false; } // Permission not granted (and we asked for it already before) - ActivityCompat.requestPermissions(activity, new String[]{permission}, REQUEST_TORRENT_READ_PERMISSION); + ActivityCompat.requestPermissions(activity, new String[]{permission}, requestCode); return false; } - private boolean hasPermission(String requiredPermission) { + public boolean hasPermission(String requiredPermission) { return ContextCompat.checkSelfPermission(context, requiredPermission) == PackageManager.PERMISSION_GRANTED; } - public Boolean handleTorrentReadPermissionResult(int requestCode, int[] grantResults) { - if (requestCode == REQUEST_TORRENT_READ_PERMISSION) { - // Return permission granting result - return grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED; - } - return null; - } - - public Boolean handleSettingsReadPermissionResult(int requestCode, int[] grantResults) { - if (requestCode == REQUEST_SETTINGS_READ_PERMISSION) { + public Boolean handleNotificationPermissionResult(int requestCode, int[] grantResults) { + if (requestCode == REQUEST_NOTIFICATIONS_PERMISSION) { // Return permission granting result return grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED; } - return null; - } - - public Boolean handleSettingsWritePermissionResult(int requestCode, int[] grantResults) { - if (requestCode == REQUEST_SETTINGS_WRITE_PERMISSION) { - // Return permission granting result - return grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED; - } - return null; + return false; } /** diff --git a/app/src/main/java/org/transdroid/core/gui/navigation/RefreshableActivity.java b/app/src/main/java/org/transdroid/core/gui/navigation/RefreshableActivity.java index 4204bb49..6c526ee4 100644 --- a/app/src/main/java/org/transdroid/core/gui/navigation/RefreshableActivity.java +++ b/app/src/main/java/org/transdroid/core/gui/navigation/RefreshableActivity.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/navigation/SelectionManagerMode.java b/app/src/main/java/org/transdroid/core/gui/navigation/SelectionManagerMode.java index 79789d17..cc063d20 100644 --- a/app/src/main/java/org/transdroid/core/gui/navigation/SelectionManagerMode.java +++ b/app/src/main/java/org/transdroid/core/gui/navigation/SelectionManagerMode.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/navigation/SelectionModificationSpinner.java b/app/src/main/java/org/transdroid/core/gui/navigation/SelectionModificationSpinner.java index b96588f9..edca5e4d 100644 --- a/app/src/main/java/org/transdroid/core/gui/navigation/SelectionModificationSpinner.java +++ b/app/src/main/java/org/transdroid/core/gui/navigation/SelectionModificationSpinner.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/navigation/SetLabelDialog.java b/app/src/main/java/org/transdroid/core/gui/navigation/SetLabelDialog.java index bb12e5ad..dcd741ae 100644 --- a/app/src/main/java/org/transdroid/core/gui/navigation/SetLabelDialog.java +++ b/app/src/main/java/org/transdroid/core/gui/navigation/SetLabelDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/navigation/SetStorageLocationDialog.java b/app/src/main/java/org/transdroid/core/gui/navigation/SetStorageLocationDialog.java index 088b83c1..891db542 100644 --- a/app/src/main/java/org/transdroid/core/gui/navigation/SetStorageLocationDialog.java +++ b/app/src/main/java/org/transdroid/core/gui/navigation/SetStorageLocationDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/navigation/SetTrackersDialog.java b/app/src/main/java/org/transdroid/core/gui/navigation/SetTrackersDialog.java index 5aa41424..bdffe35b 100644 --- a/app/src/main/java/org/transdroid/core/gui/navigation/SetTrackersDialog.java +++ b/app/src/main/java/org/transdroid/core/gui/navigation/SetTrackersDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/navigation/SetTransferRatesDialog.java b/app/src/main/java/org/transdroid/core/gui/navigation/SetTransferRatesDialog.java index 52e3ee16..0077e5d3 100644 --- a/app/src/main/java/org/transdroid/core/gui/navigation/SetTransferRatesDialog.java +++ b/app/src/main/java/org/transdroid/core/gui/navigation/SetTransferRatesDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/navigation/StatusType.java b/app/src/main/java/org/transdroid/core/gui/navigation/StatusType.java index 146ac815..23c17491 100644 --- a/app/src/main/java/org/transdroid/core/gui/navigation/StatusType.java +++ b/app/src/main/java/org/transdroid/core/gui/navigation/StatusType.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/remoterss/RemoteRssFragment.java b/app/src/main/java/org/transdroid/core/gui/remoterss/RemoteRssFragment.java index 1b6d00d1..593c3538 100644 --- a/app/src/main/java/org/transdroid/core/gui/remoterss/RemoteRssFragment.java +++ b/app/src/main/java/org/transdroid/core/gui/remoterss/RemoteRssFragment.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/remoterss/RemoteRssItemView.java b/app/src/main/java/org/transdroid/core/gui/remoterss/RemoteRssItemView.java index d3ee2e7d..4bdea196 100644 --- a/app/src/main/java/org/transdroid/core/gui/remoterss/RemoteRssItemView.java +++ b/app/src/main/java/org/transdroid/core/gui/remoterss/RemoteRssItemView.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/rss/RssFeedsActivity.java b/app/src/main/java/org/transdroid/core/gui/rss/RssFeedsActivity.java index c05d999c..f1696f50 100644 --- a/app/src/main/java/org/transdroid/core/gui/rss/RssFeedsActivity.java +++ b/app/src/main/java/org/transdroid/core/gui/rss/RssFeedsActivity.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -150,7 +150,6 @@ public class RssFeedsActivity extends AppCompatActivity { } } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) @OptionsItem(android.R.id.home) protected void navigateUp() { TorrentsActivity_.intent(this).flags(Intent.FLAG_ACTIVITY_CLEAR_TOP).start(); diff --git a/app/src/main/java/org/transdroid/core/gui/rss/RssFeedsFragment.java b/app/src/main/java/org/transdroid/core/gui/rss/RssFeedsFragment.java index 0fd0ba98..17d30452 100644 --- a/app/src/main/java/org/transdroid/core/gui/rss/RssFeedsFragment.java +++ b/app/src/main/java/org/transdroid/core/gui/rss/RssFeedsFragment.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/rss/RssItemsActivity.java b/app/src/main/java/org/transdroid/core/gui/rss/RssItemsActivity.java index bb8f31a6..44fc20c8 100644 --- a/app/src/main/java/org/transdroid/core/gui/rss/RssItemsActivity.java +++ b/app/src/main/java/org/transdroid/core/gui/rss/RssItemsActivity.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -74,7 +74,6 @@ public class RssItemsActivity extends AppCompatActivity { fragmentItems.update(rssfeed, false, requiresExternalAuthentication); } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) @OptionsItem(android.R.id.home) protected void navigateUp() { TorrentsActivity_.intent(this).flags(Intent.FLAG_ACTIVITY_CLEAR_TOP).start(); diff --git a/app/src/main/java/org/transdroid/core/gui/rss/RssItemsFragment.java b/app/src/main/java/org/transdroid/core/gui/rss/RssItemsFragment.java index e0e7963a..74f4b00e 100644 --- a/app/src/main/java/org/transdroid/core/gui/rss/RssItemsFragment.java +++ b/app/src/main/java/org/transdroid/core/gui/rss/RssItemsFragment.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/rss/RssfeedLoader.java b/app/src/main/java/org/transdroid/core/gui/rss/RssfeedLoader.java index a1fa8c0f..55f16fe5 100644 --- a/app/src/main/java/org/transdroid/core/gui/rss/RssfeedLoader.java +++ b/app/src/main/java/org/transdroid/core/gui/rss/RssfeedLoader.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/rss/RssfeedView.java b/app/src/main/java/org/transdroid/core/gui/rss/RssfeedView.java index ef1abb4a..6be0784d 100644 --- a/app/src/main/java/org/transdroid/core/gui/rss/RssfeedView.java +++ b/app/src/main/java/org/transdroid/core/gui/rss/RssfeedView.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/rss/RssfeedsAdapter.java b/app/src/main/java/org/transdroid/core/gui/rss/RssfeedsAdapter.java index b3237e94..42439702 100644 --- a/app/src/main/java/org/transdroid/core/gui/rss/RssfeedsAdapter.java +++ b/app/src/main/java/org/transdroid/core/gui/rss/RssfeedsAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/rss/RssitemStatusLayout.java b/app/src/main/java/org/transdroid/core/gui/rss/RssitemStatusLayout.java index c26cc11a..42ce59b5 100644 --- a/app/src/main/java/org/transdroid/core/gui/rss/RssitemStatusLayout.java +++ b/app/src/main/java/org/transdroid/core/gui/rss/RssitemStatusLayout.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/rss/RssitemView.java b/app/src/main/java/org/transdroid/core/gui/rss/RssitemView.java index fad0d5d5..483fe89a 100644 --- a/app/src/main/java/org/transdroid/core/gui/rss/RssitemView.java +++ b/app/src/main/java/org/transdroid/core/gui/rss/RssitemView.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/rss/RssitemsAdapter.java b/app/src/main/java/org/transdroid/core/gui/rss/RssitemsAdapter.java index 3c0b2f96..83ee8344 100644 --- a/app/src/main/java/org/transdroid/core/gui/rss/RssitemsAdapter.java +++ b/app/src/main/java/org/transdroid/core/gui/rss/RssitemsAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/search/BarcodeHelper.java b/app/src/main/java/org/transdroid/core/gui/search/BarcodeHelper.java index 664b1549..82fbd649 100644 --- a/app/src/main/java/org/transdroid/core/gui/search/BarcodeHelper.java +++ b/app/src/main/java/org/transdroid/core/gui/search/BarcodeHelper.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/search/FilePickerHelper.java b/app/src/main/java/org/transdroid/core/gui/search/FilePickerHelper.java index b82c9d71..e43f5c13 100644 --- a/app/src/main/java/org/transdroid/core/gui/search/FilePickerHelper.java +++ b/app/src/main/java/org/transdroid/core/gui/search/FilePickerHelper.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/search/SearchActivity.java b/app/src/main/java/org/transdroid/core/gui/search/SearchActivity.java index 37e3b18a..7783577a 100644 --- a/app/src/main/java/org/transdroid/core/gui/search/SearchActivity.java +++ b/app/src/main/java/org/transdroid/core/gui/search/SearchActivity.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -277,7 +277,6 @@ public class SearchActivity extends AppCompatActivity { } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) @OptionsItem(android.R.id.home) protected void navigateUp() { TorrentsActivity_.intent(this).flags(Intent.FLAG_ACTIVITY_CLEAR_TOP).start(); diff --git a/app/src/main/java/org/transdroid/core/gui/search/SearchHistoryProvider.java b/app/src/main/java/org/transdroid/core/gui/search/SearchHistoryProvider.java index 574ab227..c64f3cd8 100644 --- a/app/src/main/java/org/transdroid/core/gui/search/SearchHistoryProvider.java +++ b/app/src/main/java/org/transdroid/core/gui/search/SearchHistoryProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/search/SearchResultView.java b/app/src/main/java/org/transdroid/core/gui/search/SearchResultView.java index da3e2909..3739b4a0 100644 --- a/app/src/main/java/org/transdroid/core/gui/search/SearchResultView.java +++ b/app/src/main/java/org/transdroid/core/gui/search/SearchResultView.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/search/SearchResultsAdapter.java b/app/src/main/java/org/transdroid/core/gui/search/SearchResultsAdapter.java index 710c6b6f..d9d382a6 100644 --- a/app/src/main/java/org/transdroid/core/gui/search/SearchResultsAdapter.java +++ b/app/src/main/java/org/transdroid/core/gui/search/SearchResultsAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/search/SearchResultsFragment.java b/app/src/main/java/org/transdroid/core/gui/search/SearchResultsFragment.java index 702af9fe..9bbf1a5e 100644 --- a/app/src/main/java/org/transdroid/core/gui/search/SearchResultsFragment.java +++ b/app/src/main/java/org/transdroid/core/gui/search/SearchResultsFragment.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/search/SearchSetting.java b/app/src/main/java/org/transdroid/core/gui/search/SearchSetting.java index 5a8e4cea..a5bfdbb8 100644 --- a/app/src/main/java/org/transdroid/core/gui/search/SearchSetting.java +++ b/app/src/main/java/org/transdroid/core/gui/search/SearchSetting.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/search/SearchSettingSelectionView.java b/app/src/main/java/org/transdroid/core/gui/search/SearchSettingSelectionView.java index a0543d28..09bdb77c 100644 --- a/app/src/main/java/org/transdroid/core/gui/search/SearchSettingSelectionView.java +++ b/app/src/main/java/org/transdroid/core/gui/search/SearchSettingSelectionView.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/search/SearchSettingsDropDownAdapter.java b/app/src/main/java/org/transdroid/core/gui/search/SearchSettingsDropDownAdapter.java index d4646725..7f7957ef 100644 --- a/app/src/main/java/org/transdroid/core/gui/search/SearchSettingsDropDownAdapter.java +++ b/app/src/main/java/org/transdroid/core/gui/search/SearchSettingsDropDownAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/search/SearchSiteView.java b/app/src/main/java/org/transdroid/core/gui/search/SearchSiteView.java index 499a3b21..2646a7b6 100644 --- a/app/src/main/java/org/transdroid/core/gui/search/SearchSiteView.java +++ b/app/src/main/java/org/transdroid/core/gui/search/SearchSiteView.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/search/SearchSitesAdapter.java b/app/src/main/java/org/transdroid/core/gui/search/SearchSitesAdapter.java index 035a92c4..6fa516ba 100644 --- a/app/src/main/java/org/transdroid/core/gui/search/SearchSitesAdapter.java +++ b/app/src/main/java/org/transdroid/core/gui/search/SearchSitesAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/search/SendIntentHelper.java b/app/src/main/java/org/transdroid/core/gui/search/SendIntentHelper.java index 9f6b32f1..d5471511 100644 --- a/app/src/main/java/org/transdroid/core/gui/search/SendIntentHelper.java +++ b/app/src/main/java/org/transdroid/core/gui/search/SendIntentHelper.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/search/UrlEntryDialog.java b/app/src/main/java/org/transdroid/core/gui/search/UrlEntryDialog.java index 4cb329c2..a0fbbe93 100644 --- a/app/src/main/java/org/transdroid/core/gui/search/UrlEntryDialog.java +++ b/app/src/main/java/org/transdroid/core/gui/search/UrlEntryDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/settings/AboutDialog.java b/app/src/main/java/org/transdroid/core/gui/settings/AboutDialog.java index c890bd74..4214dc41 100644 --- a/app/src/main/java/org/transdroid/core/gui/settings/AboutDialog.java +++ b/app/src/main/java/org/transdroid/core/gui/settings/AboutDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/settings/ChangelogDialog.java b/app/src/main/java/org/transdroid/core/gui/settings/ChangelogDialog.java index 7fdd71a3..04eb284b 100644 --- a/app/src/main/java/org/transdroid/core/gui/settings/ChangelogDialog.java +++ b/app/src/main/java/org/transdroid/core/gui/settings/ChangelogDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/settings/HelpSettingsActivity.java b/app/src/main/java/org/transdroid/core/gui/settings/HelpSettingsActivity.java index c4bf2b2f..f4a3130a 100644 --- a/app/src/main/java/org/transdroid/core/gui/settings/HelpSettingsActivity.java +++ b/app/src/main/java/org/transdroid/core/gui/settings/HelpSettingsActivity.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,11 +16,9 @@ */ package org.transdroid.core.gui.settings; -import android.annotation.TargetApi; import android.app.Dialog; import android.content.Intent; import android.net.Uri; -import android.os.Build; import android.os.Bundle; import androidx.preference.Preference; @@ -88,7 +86,6 @@ public class HelpSettingsActivity extends PreferenceCompatActivity { findPreference("system_about").setOnPreferenceClickListener(onAboutClick); } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) @OptionsItem(android.R.id.home) protected void navigateUp() { MainSettingsActivity_.intent(this).flags(Intent.FLAG_ACTIVITY_CLEAR_TOP).start(); diff --git a/app/src/main/java/org/transdroid/core/gui/settings/KeyBoundPreferencesActivity.java b/app/src/main/java/org/transdroid/core/gui/settings/KeyBoundPreferencesActivity.java index d5e52994..aabb22ff 100644 --- a/app/src/main/java/org/transdroid/core/gui/settings/KeyBoundPreferencesActivity.java +++ b/app/src/main/java/org/transdroid/core/gui/settings/KeyBoundPreferencesActivity.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/settings/MainSettingsActivity.java b/app/src/main/java/org/transdroid/core/gui/settings/MainSettingsActivity.java index 94e20184..3f71a332 100644 --- a/app/src/main/java/org/transdroid/core/gui/settings/MainSettingsActivity.java +++ b/app/src/main/java/org/transdroid/core/gui/settings/MainSettingsActivity.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,13 +16,11 @@ */ package org.transdroid.core.gui.settings; -import android.annotation.TargetApi; import android.app.Dialog; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; -import android.os.Build; import android.os.Bundle; import androidx.appcompat.app.AlertDialog; @@ -256,7 +254,6 @@ public class MainSettingsActivity extends PreferenceCompatActivity { } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) @OptionsItem(android.R.id.home) protected void navigateUp() { TorrentsActivity_.intent(this).flags(Intent.FLAG_ACTIVITY_CLEAR_TOP).start(); diff --git a/app/src/main/java/org/transdroid/core/gui/settings/NotificationSettingsActivity.java b/app/src/main/java/org/transdroid/core/gui/settings/NotificationSettingsActivity.java index 5314100e..a64208f5 100644 --- a/app/src/main/java/org/transdroid/core/gui/settings/NotificationSettingsActivity.java +++ b/app/src/main/java/org/transdroid/core/gui/settings/NotificationSettingsActivity.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,13 +16,12 @@ */ package org.transdroid.core.gui.settings; -import android.annotation.TargetApi; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; -import android.os.Build; import android.os.Bundle; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import org.androidannotations.annotations.Bean; @@ -30,12 +29,15 @@ import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.OptionsItem; import org.transdroid.R; import org.transdroid.core.app.settings.NotificationSettings; +import org.transdroid.core.gui.navigation.NavigationHelper; import org.transdroid.core.service.RssCheckerJob; import org.transdroid.core.service.ServerCheckerJob; @EActivity public class NotificationSettingsActivity extends PreferenceCompatActivity implements OnSharedPreferenceChangeListener { + @Bean + protected NavigationHelper navigationHelper; @Bean protected NotificationSettings notificationSettings; @@ -47,9 +49,19 @@ public class NotificationSettingsActivity extends PreferenceCompatActivity imple // Load the notification-related preferences from XML and update availability thereof addPreferencesFromResource(R.xml.pref_notifications); - boolean disabled = !notificationSettings.isEnabledForRss() && !notificationSettings.isEnabledForTorrents(); - updatePrefsEnabled(disabled); + updatePrefsEnabled(); + + } + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + if (navigationHelper.handleNotificationPermissionResult(requestCode, grantResults)) { + // Now that we have permission, schedule the jobs + ServerCheckerJob.schedule(getApplicationContext()); + RssCheckerJob.schedule(getApplicationContext()); + updatePrefsEnabled(); + } } @Override @@ -71,7 +83,6 @@ public class NotificationSettingsActivity extends PreferenceCompatActivity imple getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) @OptionsItem(android.R.id.home) protected void navigateUp() { MainSettingsActivity_.intent(this).flags(Intent.FLAG_ACTIVITY_CLEAR_TOP).start(); @@ -79,11 +90,18 @@ public class NotificationSettingsActivity extends PreferenceCompatActivity imple @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + boolean needsPermission = notificationSettings.isEnabledForRss() || notificationSettings.isEnabledForTorrents(); + if (needsPermission && !navigationHelper.checkOrRequestNotificationPermission(this)) { + return; + } + // Already have permission to show notifications, so update the jobs now ServerCheckerJob.schedule(getApplicationContext()); RssCheckerJob.schedule(getApplicationContext()); + updatePrefsEnabled(); } - private void updatePrefsEnabled(boolean disabled) { + private void updatePrefsEnabled() { + boolean disabled = !notificationSettings.isEnabledForRss() && !notificationSettings.isEnabledForTorrents(); findPreference("notifications_interval").setEnabled(!disabled); findPreference("notifications_sound").setEnabled(!disabled); findPreference("notifications_vibrate").setEnabled(!disabled); diff --git a/app/src/main/java/org/transdroid/core/gui/settings/RssfeedPreference.java b/app/src/main/java/org/transdroid/core/gui/settings/RssfeedPreference.java index 7b985ad3..ad4c17dc 100644 --- a/app/src/main/java/org/transdroid/core/gui/settings/RssfeedPreference.java +++ b/app/src/main/java/org/transdroid/core/gui/settings/RssfeedPreference.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/settings/RssfeedSettingsActivity.java b/app/src/main/java/org/transdroid/core/gui/settings/RssfeedSettingsActivity.java index e1b89fdb..46cc83db 100644 --- a/app/src/main/java/org/transdroid/core/gui/settings/RssfeedSettingsActivity.java +++ b/app/src/main/java/org/transdroid/core/gui/settings/RssfeedSettingsActivity.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,10 +16,8 @@ */ package org.transdroid.core.gui.settings; -import android.annotation.TargetApi; import android.app.Dialog; import android.content.Intent; -import android.os.Build; import android.os.Bundle; import androidx.appcompat.app.AlertDialog; @@ -60,7 +58,6 @@ public class RssfeedSettingsActivity extends KeyBoundPreferencesActivity { } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) @OptionsItem(android.R.id.home) protected void navigateUp() { MainSettingsActivity_.intent(this).flags(Intent.FLAG_ACTIVITY_CLEAR_TOP).start(); diff --git a/app/src/main/java/org/transdroid/core/gui/settings/ServerPreference.java b/app/src/main/java/org/transdroid/core/gui/settings/ServerPreference.java index e5116d96..06cf7b3a 100644 --- a/app/src/main/java/org/transdroid/core/gui/settings/ServerPreference.java +++ b/app/src/main/java/org/transdroid/core/gui/settings/ServerPreference.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/settings/ServerSettingsActivity.java b/app/src/main/java/org/transdroid/core/gui/settings/ServerSettingsActivity.java index b6eaadca..9c9f86a5 100644 --- a/app/src/main/java/org/transdroid/core/gui/settings/ServerSettingsActivity.java +++ b/app/src/main/java/org/transdroid/core/gui/settings/ServerSettingsActivity.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,11 +16,9 @@ */ package org.transdroid.core.gui.settings; -import android.annotation.TargetApi; import android.app.Dialog; import android.content.Intent; import android.content.SharedPreferences; -import android.os.Build; import android.os.Bundle; import androidx.annotation.NonNull; @@ -95,7 +93,6 @@ public class ServerSettingsActivity extends KeyBoundPreferencesActivity { }); } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) @OptionsItem(android.R.id.home) protected void navigateUp() { MainSettingsActivity_.intent(this).flags(Intent.FLAG_ACTIVITY_CLEAR_TOP).start(); @@ -123,6 +120,7 @@ public class ServerSettingsActivity extends KeyBoundPreferencesActivity { @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (connectivityHelper.requestedPermissionWasGranted(requestCode, permissions, grantResults)) { localNetworkPreference.getOnPreferenceClickListener().onPreferenceClick(localNetworkPreference); } diff --git a/app/src/main/java/org/transdroid/core/gui/settings/SystemSettingsActivity.java b/app/src/main/java/org/transdroid/core/gui/settings/SystemSettingsActivity.java index ec6538a8..86401617 100644 --- a/app/src/main/java/org/transdroid/core/gui/settings/SystemSettingsActivity.java +++ b/app/src/main/java/org/transdroid/core/gui/settings/SystemSettingsActivity.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,13 +16,11 @@ */ package org.transdroid.core.gui.settings; -import android.annotation.TargetApi; import android.app.Dialog; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.content.SharedPreferences; -import android.os.Build; import android.os.Bundle; import android.text.TextUtils; @@ -48,7 +46,6 @@ import org.transdroid.core.gui.search.BarcodeHelper; import org.transdroid.core.gui.search.SearchHistoryProvider; import org.transdroid.core.service.AppUpdateJob; -import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -68,6 +65,7 @@ public class SystemSettingsActivity extends PreferenceCompatActivity { protected ErrorLogSender errorLogSender; @Bean protected SettingsPersistence settingsPersistence; + private OnPreferenceClickListener onImportSettingsClick = preference -> { showDialog(DIALOG_IMPORTSETTINGS); return true; @@ -77,7 +75,10 @@ public class SystemSettingsActivity extends PreferenceCompatActivity { return true; }; private OnPreferenceClickListener onCheckUpdatesClick = preference -> { - AppUpdateJob.schedule(getApplicationContext()); + if (!navigationHelper.checkOrRequestNotificationPermission(this)) { + // Already have permission: continue + AppUpdateJob.schedule(getApplicationContext()); + } return true; }; private OnPreferenceClickListener onClearSearchClick = preference -> { @@ -88,9 +89,6 @@ public class SystemSettingsActivity extends PreferenceCompatActivity { private OnClickListener importSettingsFromFile = new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT - && !navigationHelper.checkSettingsReadPermission(SystemSettingsActivity.this)) - return; // We are requesting permission to access file storage importSettingsFromFile(); } }; @@ -101,9 +99,6 @@ public class SystemSettingsActivity extends PreferenceCompatActivity { private OnClickListener exportSettingsToFile = new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT - && !navigationHelper.checkSettingsWritePermission(SystemSettingsActivity.this)) - return; // We are requesting permission to access file storage exportSettingsToFile(); } }; @@ -142,7 +137,6 @@ public class SystemSettingsActivity extends PreferenceCompatActivity { findPreference("system_exportsettings").setOnPreferenceClickListener(onExportSettingsClick); } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) @OptionsItem(android.R.id.home) protected void navigateUp() { MainSettingsActivity_.intent(this).flags(Intent.FLAG_ACTIVITY_CLEAR_TOP).start(); @@ -150,32 +144,18 @@ public class SystemSettingsActivity extends PreferenceCompatActivity { @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - if (Boolean.TRUE.equals(navigationHelper.handleSettingsReadPermissionResult(requestCode, grantResults))) { - importSettingsFromFile(); - } else if (Boolean.TRUE.equals(navigationHelper.handleSettingsWritePermissionResult(requestCode, grantResults))) { - exportSettingsToFile(); + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + if (navigationHelper.handleNotificationPermissionResult(requestCode, grantResults)) { + // Now that we have permission, schedule the job + AppUpdateJob.schedule(getApplicationContext()); } } private void importSettingsFromFile() { - try { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(SystemSettingsActivity.this); - settingsPersistence.importSettingsFromFile(prefs, SettingsPersistence.DEFAULT_SETTINGS_FILE); - SnackbarManager.show(Snackbar.with(SystemSettingsActivity.this).text(R.string.pref_import_success)); - } else { - Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); - intent.addCategory(Intent.CATEGORY_OPENABLE); - intent.setType("application/json"); - startActivityForResult(intent, ACTIVITY_IMPORT_SETTINGS); - } - } catch (FileNotFoundException e) { - SnackbarManager - .show(Snackbar.with(SystemSettingsActivity.this).text(R.string.error_file_not_found).colorResource(R.color.red)); - } catch (JSONException e) { - SnackbarManager.show(Snackbar.with(SystemSettingsActivity.this) - .text(getString(R.string.error_no_valid_settings_file, getString(R.string.app_name))).colorResource(R.color.red)); - } + Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); + intent.addCategory(Intent.CATEGORY_OPENABLE); + intent.setType("application/json"); + startActivityForResult(intent, ACTIVITY_IMPORT_SETTINGS); } @OnActivityResult(ACTIVITY_IMPORT_SETTINGS) @@ -196,22 +176,11 @@ public class SystemSettingsActivity extends PreferenceCompatActivity { } private void exportSettingsToFile() { - try { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(SystemSettingsActivity.this); - settingsPersistence.exportSettingsToFile(prefs, SettingsPersistence.DEFAULT_SETTINGS_FILE); - SnackbarManager.show(Snackbar.with(SystemSettingsActivity.this).text(R.string.pref_export_success)); - } else { - Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT); - intent.addCategory(Intent.CATEGORY_OPENABLE); - intent.setType("application/json"); - intent.putExtra(Intent.EXTRA_TITLE, SettingsPersistence.DEFAULT_SETTINGS_FILENAME); - startActivityForResult(intent, ACTIVITY_EXPORT_SETTINGS); - } - } catch (JSONException | IOException e) { - SnackbarManager.show(Snackbar.with(SystemSettingsActivity.this).text(R.string.error_cant_write_settings_file) - .colorResource(R.color.red)); - } + Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT); + intent.addCategory(Intent.CATEGORY_OPENABLE); + intent.setType("application/json"); + intent.putExtra(Intent.EXTRA_TITLE, SettingsPersistence.DEFAULT_SETTINGS_FILENAME); + startActivityForResult(intent, ACTIVITY_EXPORT_SETTINGS); } @OnActivityResult(ACTIVITY_EXPORT_SETTINGS) @@ -255,12 +224,7 @@ public class SystemSettingsActivity extends PreferenceCompatActivity { case DIALOG_IMPORTSETTINGS: // @formatter:off return new AlertDialog.Builder(this) - .setMessage( - getString( - Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT - ? R.string.pref_import_dialog : R.string.pref_import_dialog_android10, - getString(R.string.app_name), - SettingsPersistence.DEFAULT_SETTINGS_FILE.toString())) + .setMessage(getString(R.string.pref_import_dialog_android10)) .setPositiveButton(R.string.pref_import_fromfile, importSettingsFromFile) .setNeutralButton(R.string.pref_import_fromqr, importSettingsFromQr) .setNegativeButton(android.R.string.cancel, null) @@ -269,12 +233,7 @@ public class SystemSettingsActivity extends PreferenceCompatActivity { case DIALOG_EXPORTSETTINGS: // @formatter:off return new AlertDialog.Builder(this) - .setMessage( - getString( - Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT - ? R.string.pref_export_dialog : R.string.pref_export_dialog_android10, - getString(R.string.app_name), - SettingsPersistence.DEFAULT_SETTINGS_FILE.toString())) + .setMessage(getString(R.string.pref_export_dialog_android10)) .setPositiveButton(R.string.pref_export_tofile, exportSettingsToFile) .setNeutralButton(R.string.pref_export_toqr, exportSettingsToQr) .setNegativeButton(android.R.string.cancel, null) diff --git a/app/src/main/java/org/transdroid/core/gui/settings/WebsearchPreference.java b/app/src/main/java/org/transdroid/core/gui/settings/WebsearchPreference.java index cfe9cc02..988e6c3e 100644 --- a/app/src/main/java/org/transdroid/core/gui/settings/WebsearchPreference.java +++ b/app/src/main/java/org/transdroid/core/gui/settings/WebsearchPreference.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/gui/settings/WebsearchSettingsActivity.java b/app/src/main/java/org/transdroid/core/gui/settings/WebsearchSettingsActivity.java index 2e7a1174..992eb4aa 100644 --- a/app/src/main/java/org/transdroid/core/gui/settings/WebsearchSettingsActivity.java +++ b/app/src/main/java/org/transdroid/core/gui/settings/WebsearchSettingsActivity.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,10 +16,8 @@ */ package org.transdroid.core.gui.settings; -import android.annotation.TargetApi; import android.app.Dialog; import android.content.Intent; -import android.os.Build; import android.os.Bundle; import androidx.appcompat.app.AlertDialog; @@ -56,7 +54,6 @@ public class WebsearchSettingsActivity extends KeyBoundPreferencesActivity { } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) @OptionsItem(android.R.id.home) protected void navigateUp() { MainSettingsActivity_.intent(this).flags(Intent.FLAG_ACTIVITY_CLEAR_TOP).start(); diff --git a/app/src/main/java/org/transdroid/core/seedbox/DediseedboxSettings.java b/app/src/main/java/org/transdroid/core/seedbox/DediseedboxSettings.java index 46ab5870..75c8adb1 100644 --- a/app/src/main/java/org/transdroid/core/seedbox/DediseedboxSettings.java +++ b/app/src/main/java/org/transdroid/core/seedbox/DediseedboxSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/seedbox/DediseedboxSettingsActivity.java b/app/src/main/java/org/transdroid/core/seedbox/DediseedboxSettingsActivity.java index 7f9c32d1..c1d91784 100644 --- a/app/src/main/java/org/transdroid/core/seedbox/DediseedboxSettingsActivity.java +++ b/app/src/main/java/org/transdroid/core/seedbox/DediseedboxSettingsActivity.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -65,7 +65,6 @@ public class DediseedboxSettingsActivity extends KeyBoundPreferencesActivity { } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) @OptionsItem(android.R.id.home) protected void navigateUp() { MainSettingsActivity_.intent(this).flags(Intent.FLAG_ACTIVITY_CLEAR_TOP).start(); diff --git a/app/src/main/java/org/transdroid/core/seedbox/SeedboxPreference.java b/app/src/main/java/org/transdroid/core/seedbox/SeedboxPreference.java index 7839d6e8..5a5630dd 100644 --- a/app/src/main/java/org/transdroid/core/seedbox/SeedboxPreference.java +++ b/app/src/main/java/org/transdroid/core/seedbox/SeedboxPreference.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/seedbox/SeedboxProvider.java b/app/src/main/java/org/transdroid/core/seedbox/SeedboxProvider.java index 10a1a9a6..b3980262 100644 --- a/app/src/main/java/org/transdroid/core/seedbox/SeedboxProvider.java +++ b/app/src/main/java/org/transdroid/core/seedbox/SeedboxProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/seedbox/SeedboxSettings.java b/app/src/main/java/org/transdroid/core/seedbox/SeedboxSettings.java index 15b0ee8c..957be1f6 100644 --- a/app/src/main/java/org/transdroid/core/seedbox/SeedboxSettings.java +++ b/app/src/main/java/org/transdroid/core/seedbox/SeedboxSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/seedbox/SeedboxSettingsImpl.java b/app/src/main/java/org/transdroid/core/seedbox/SeedboxSettingsImpl.java index ae3701bb..6ce5dbe7 100644 --- a/app/src/main/java/org/transdroid/core/seedbox/SeedboxSettingsImpl.java +++ b/app/src/main/java/org/transdroid/core/seedbox/SeedboxSettingsImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/seedbox/XirvikDediSettings.java b/app/src/main/java/org/transdroid/core/seedbox/XirvikDediSettings.java index ae92eb4a..64eccd11 100644 --- a/app/src/main/java/org/transdroid/core/seedbox/XirvikDediSettings.java +++ b/app/src/main/java/org/transdroid/core/seedbox/XirvikDediSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/seedbox/XirvikDediSettingsActivity.java b/app/src/main/java/org/transdroid/core/seedbox/XirvikDediSettingsActivity.java index f837b26b..1cc819b9 100644 --- a/app/src/main/java/org/transdroid/core/seedbox/XirvikDediSettingsActivity.java +++ b/app/src/main/java/org/transdroid/core/seedbox/XirvikDediSettingsActivity.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -66,7 +66,6 @@ public class XirvikDediSettingsActivity extends KeyBoundPreferencesActivity { } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) @OptionsItem(android.R.id.home) protected void navigateUp() { MainSettingsActivity_.intent(this).flags(Intent.FLAG_ACTIVITY_CLEAR_TOP).start(); diff --git a/app/src/main/java/org/transdroid/core/seedbox/XirvikSemiSettings.java b/app/src/main/java/org/transdroid/core/seedbox/XirvikSemiSettings.java index d0ab4dd6..9882dc24 100644 --- a/app/src/main/java/org/transdroid/core/seedbox/XirvikSemiSettings.java +++ b/app/src/main/java/org/transdroid/core/seedbox/XirvikSemiSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/seedbox/XirvikSemiSettingsActivity.java b/app/src/main/java/org/transdroid/core/seedbox/XirvikSemiSettingsActivity.java index a6a95e1d..b1ba1f07 100644 --- a/app/src/main/java/org/transdroid/core/seedbox/XirvikSemiSettingsActivity.java +++ b/app/src/main/java/org/transdroid/core/seedbox/XirvikSemiSettingsActivity.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -65,7 +65,6 @@ public class XirvikSemiSettingsActivity extends KeyBoundPreferencesActivity { } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) @OptionsItem(android.R.id.home) protected void navigateUp() { MainSettingsActivity_.intent(this).flags(Intent.FLAG_ACTIVITY_CLEAR_TOP).start(); diff --git a/app/src/main/java/org/transdroid/core/seedbox/XirvikSettingsActivity.java b/app/src/main/java/org/transdroid/core/seedbox/XirvikSettingsActivity.java index ca7593b2..f4266aa7 100644 --- a/app/src/main/java/org/transdroid/core/seedbox/XirvikSettingsActivity.java +++ b/app/src/main/java/org/transdroid/core/seedbox/XirvikSettingsActivity.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -120,7 +120,6 @@ public class XirvikSettingsActivity extends KeyBoundPreferencesActivity { edit.apply(); } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) @OptionsItem(android.R.id.home) protected void navigateUp() { MainSettingsActivity_.intent(this).flags(Intent.FLAG_ACTIVITY_CLEAR_TOP).start(); diff --git a/app/src/main/java/org/transdroid/core/seedbox/XirvikSharedSettings.java b/app/src/main/java/org/transdroid/core/seedbox/XirvikSharedSettings.java index b2b66fe4..2796d9eb 100644 --- a/app/src/main/java/org/transdroid/core/seedbox/XirvikSharedSettings.java +++ b/app/src/main/java/org/transdroid/core/seedbox/XirvikSharedSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/service/AppUpdateJob.java b/app/src/main/java/org/transdroid/core/service/AppUpdateJob.java index 7cc99a09..3a4a22aa 100644 --- a/app/src/main/java/org/transdroid/core/service/AppUpdateJob.java +++ b/app/src/main/java/org/transdroid/core/service/AppUpdateJob.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,13 +16,19 @@ */ package org.transdroid.core.service; +import static java.security.AccessController.getContext; + import android.content.Context; import androidx.annotation.NonNull; -import com.evernote.android.job.Job; -import com.evernote.android.job.JobManager; -import com.evernote.android.job.JobRequest; +import androidx.work.Constraints; +import androidx.work.Operation; +import androidx.work.PeriodicWorkRequest; +import androidx.work.Worker; +import androidx.work.WorkManager; +import androidx.work.NetworkType; +import androidx.work.WorkerParameters; import org.transdroid.core.app.settings.NotificationSettings; import org.transdroid.core.app.settings.NotificationSettings_; @@ -31,37 +37,48 @@ import org.transdroid.core.app.settings.SystemSettings_; import org.transdroid.core.gui.log.Log_; import org.transdroid.core.gui.navigation.NavigationHelper_; +import java.util.UUID; import java.util.concurrent.TimeUnit; -public class AppUpdateJob extends Job { +public class AppUpdateJob extends Worker { static final String TAG = "app_update_checker"; - private static Integer scheduledJobId; + private static UUID scheduledJobId; + + public AppUpdateJob(@NonNull Context context, @NonNull WorkerParameters workerParams) { + super(context, workerParams); + + } - public static void schedule(Context context) { + public static void schedule(Context context) { NotificationSettings notificationSettings = NotificationSettings_.getInstance_(context); SystemSettings systemSettings = SystemSettings_.getInstance_(context); NavigationHelper_ navigationHelper = NavigationHelper_.getInstance_(context); if (systemSettings.checkForUpdates() && navigationHelper.enableUpdateChecker()) { Log_.getInstance_(context).d(TAG, "Schedule app update checker job"); NotificationChannels.ensureAppUpdateChannel(context, notificationSettings); - scheduledJobId = new JobRequest.Builder(AppUpdateJob.TAG) - .setPeriodic(TimeUnit.DAYS.toMillis(1)) - .setRequiredNetworkType(JobRequest.NetworkType.CONNECTED) - .setUpdateCurrent(true) - .build() - .schedule(); + Constraints constraints = new Constraints.Builder() + .setRequiredNetworkType(NetworkType.CONNECTED) + .build(); + PeriodicWorkRequest appUpdate = new PeriodicWorkRequest.Builder(AppUpdateJob.class, 1, TimeUnit.DAYS) + .addTag(AppUpdateJob.TAG) + .setConstraints(constraints) + .build(); + WorkManager.getInstance(context).cancelAllWorkByTag(AppUpdateJob.TAG); + WorkManager.getInstance(context).enqueue(appUpdate); + scheduledJobId = appUpdate.getId(); } else if (scheduledJobId != null) { - Log_.getInstance_(context).d(TAG, "Cancel rss checker job"); - JobManager.instance().cancel(scheduledJobId); + Log_.getInstance_(context).d(TAG, "Cancel app update checker job"); + WorkManager.getInstance(context).cancelWorkById(scheduledJobId); + scheduledJobId = null; } } @NonNull @Override - protected Result onRunJob(@NonNull Params params) { - return AppUpdateJobRunner_.getInstance_(getContext()).run(); + public Result doWork() { + return AppUpdateJobRunner_.getInstance_(getApplicationContext()).run(); } } diff --git a/app/src/main/java/org/transdroid/core/service/AppUpdateJobRunner.java b/app/src/main/java/org/transdroid/core/service/AppUpdateJobRunner.java index e2b070ce..eb3db542 100644 --- a/app/src/main/java/org/transdroid/core/service/AppUpdateJobRunner.java +++ b/app/src/main/java/org/transdroid/core/service/AppUpdateJobRunner.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,7 +26,7 @@ import android.net.Uri; import androidx.core.app.NotificationCompat; -import com.evernote.android.job.Job; +import androidx.work.Worker; import org.androidannotations.annotations.Bean; import org.androidannotations.annotations.EBean; @@ -73,16 +73,16 @@ public class AppUpdateJobRunner { @SystemService protected NotificationManager notificationManager; - Job.Result run() { + Worker.Result run() { // Only run this service if app updates are handled via transdroid.org at all if (!navigationHelper.enableUpdateChecker()) - return Job.Result.FAILURE; + return Worker.Result.failure(); if (!connectivityHelper.shouldPerformBackgroundActions() || !systemSettings.checkForUpdates()) { log.d(this, "Skip the app update service, as background data is disabled, the service is explicitly " + "disabled or we are not connected."); - return Job.Result.RESCHEDULE; + return Worker.Result.retry(); } Date lastChecked = systemSettings.getLastCheckedForAppUpdates(); @@ -90,8 +90,8 @@ public class AppUpdateJobRunner { lastDay.add(Calendar.DAY_OF_MONTH, -1); if (lastChecked != null && lastChecked.after(lastDay.getTime())) { log.d(this, "Skip the update service, as we already checked the last 24 hours (or to be exact at " - + lastChecked.toString() + ")."); - return Job.Result.RESCHEDULE; + + lastChecked + ")."); + return Worker.Result.retry(); } DefaultHttpClient httpclient = new DefaultHttpClient(); @@ -108,9 +108,9 @@ public class AppUpdateJobRunner { // New version of the app? try { PackageInfo appPackage = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); - log.d(this, "Local Transdroid is at " + appPackage.getLongVersionCode() + " and the reported latest version is " + log.d(this, "Local Transdroid is at " + appPackage.versionCode + " and the reported latest version is " + appVersion); - if (appPackage.getLongVersionCode() < appVersion) { + if (appPackage.versionCode < appVersion) { // New version available! Notify the user. newNotification(context.getString(R.string.update_app_newversion), context.getString(R.string.update_app_newversion), @@ -124,9 +124,9 @@ public class AppUpdateJobRunner { // New version of the search module? try { PackageInfo searchPackage = context.getPackageManager().getPackageInfo("org.transdroid.search", 0); - log.d(this, "Local Transdroid Seach is at " + searchPackage.getLongVersionCode() + log.d(this, "Local Transdroid Search is at " + searchPackage.versionCode + " and the reported latest version is " + searchVersion); - if (searchPackage.getLongVersionCode() < searchVersion) { + if (searchPackage.versionCode < searchVersion) { // New version available! Notify the user. newNotification(context.getString(R.string.update_search_newversion), context.getString(R.string.update_search_newversion), @@ -145,10 +145,10 @@ public class AppUpdateJobRunner { } catch (Exception e) { // Cannot check right now for some reason; log and ignore log.d(this, "Cannot retrieve latest app or search module version code from the site: " + e.toString()); - return Job.Result.FAILURE; + return Worker.Result.failure(); } - return Job.Result.SUCCESS; + return Worker.Result.success(); } /** diff --git a/app/src/main/java/org/transdroid/core/service/BootReceiver.java b/app/src/main/java/org/transdroid/core/service/BootReceiver.java index 05d15c1d..d065d890 100644 --- a/app/src/main/java/org/transdroid/core/service/BootReceiver.java +++ b/app/src/main/java/org/transdroid/core/service/BootReceiver.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/service/ConnectivityHelper.java b/app/src/main/java/org/transdroid/core/service/ConnectivityHelper.java index d10d0c22..6940374f 100644 --- a/app/src/main/java/org/transdroid/core/service/ConnectivityHelper.java +++ b/app/src/main/java/org/transdroid/core/service/ConnectivityHelper.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/service/RssCheckerJob.java b/app/src/main/java/org/transdroid/core/service/RssCheckerJob.java index bab72d75..d2f3ac6c 100644 --- a/app/src/main/java/org/transdroid/core/service/RssCheckerJob.java +++ b/app/src/main/java/org/transdroid/core/service/RssCheckerJob.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,45 +16,62 @@ */ package org.transdroid.core.service; +import static java.security.AccessController.getContext; + import android.content.Context; import androidx.annotation.NonNull; -import com.evernote.android.job.Job; -import com.evernote.android.job.JobManager; -import com.evernote.android.job.JobRequest; +import androidx.work.Constraints; +import androidx.work.PeriodicWorkRequest; +import androidx.work.Worker; +import androidx.work.WorkManager; +import androidx.work.NetworkType; +import androidx.work.WorkerParameters; import org.transdroid.core.app.settings.NotificationSettings; import org.transdroid.core.app.settings.NotificationSettings_; import org.transdroid.core.gui.log.Log_; -public class RssCheckerJob extends Job { +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +public class RssCheckerJob extends Worker { static final String TAG = "rss_checker"; - private static Integer scheduledJobId; + private static UUID scheduledJobId; + + public RssCheckerJob(@NonNull Context context, @NonNull WorkerParameters workerParams) { + super(context, workerParams); + } public static void schedule(Context context) { NotificationSettings notificationSettings = NotificationSettings_.getInstance_(context); if (notificationSettings.isEnabledForRss()) { Log_.getInstance_(context).d(TAG, "Schedule rss checker job"); NotificationChannels.ensureRssCheckerChannel(context, notificationSettings); - scheduledJobId = new JobRequest.Builder(RssCheckerJob.TAG) - .setPeriodic(notificationSettings.getInvervalInMilliseconds()) - .setRequiredNetworkType(JobRequest.NetworkType.CONNECTED) - .setUpdateCurrent(true) - .build() - .schedule(); + Constraints constraints = new Constraints.Builder() + .setRequiredNetworkType(NetworkType.CONNECTED) + .build(); + PeriodicWorkRequest rssChecker = new PeriodicWorkRequest.Builder(RssCheckerJob.class, notificationSettings.getInvervalInMilliseconds(), TimeUnit.MILLISECONDS) + .addTag(RssCheckerJob.TAG) + .setConstraints(constraints) + .build(); + WorkManager.getInstance(context).cancelAllWorkByTag(RssCheckerJob.TAG); + WorkManager.getInstance(context).enqueue(rssChecker); + scheduledJobId = rssChecker.getId(); } else if (scheduledJobId != null) { Log_.getInstance_(context).d(TAG, "Cancel rss checker job"); - JobManager.instance().cancel(scheduledJobId); + WorkManager.getInstance(context).cancelWorkById(scheduledJobId); + scheduledJobId = null; } } @NonNull @Override - protected Result onRunJob(@NonNull Params params) { - return RssCheckerJobRunner_.getInstance_(getContext()).run(); + public Result doWork() { + return RssCheckerJobRunner_.getInstance_(getApplicationContext()).run(); } } diff --git a/app/src/main/java/org/transdroid/core/service/RssCheckerJobRunner.java b/app/src/main/java/org/transdroid/core/service/RssCheckerJobRunner.java index b8fb04a4..34321813 100644 --- a/app/src/main/java/org/transdroid/core/service/RssCheckerJobRunner.java +++ b/app/src/main/java/org/transdroid/core/service/RssCheckerJobRunner.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,8 +22,7 @@ import android.content.Context; import android.content.Intent; import androidx.core.app.NotificationCompat; - -import com.evernote.android.job.Job; +import androidx.work.Worker; import org.androidannotations.annotations.Bean; import org.androidannotations.annotations.EBean; @@ -59,12 +58,12 @@ public class RssCheckerJobRunner { @SystemService protected NotificationManager notificationManager; - Job.Result run() { + Worker.Result run() { if (!connectivityHelper.shouldPerformBackgroundActions() || !notificationSettings.isEnabledForRss()) { log.d(this, "Skip the RSS checker service, as background data is disabled, the service is disabled or we are not connected."); - return Job.Result.RESCHEDULE; + return Worker.Result.retry(); } // Check every RSS feed for new items @@ -117,7 +116,7 @@ public class RssCheckerJobRunner { if (unread == 0) { // No new items; just exit - return Job.Result.SUCCESS; + return Worker.Result.success(); } // Provide a notification, since there are new RSS items @@ -140,7 +139,7 @@ public class RssCheckerJobRunner { } notificationManager.notify(80001, builder.build()); - return Job.Result.SUCCESS; + return Worker.Result.success(); } } diff --git a/app/src/main/java/org/transdroid/core/service/ScheduledJobCreator.java b/app/src/main/java/org/transdroid/core/service/ScheduledJobCreator.java deleted file mode 100644 index e6209c05..00000000 --- a/app/src/main/java/org/transdroid/core/service/ScheduledJobCreator.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2010-2018 Eric Kok et al. - * - * Transdroid is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Transdroid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Transdroid. If not, see . - */ -package org.transdroid.core.service; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.evernote.android.job.Job; -import com.evernote.android.job.JobCreator; - -public class ScheduledJobCreator implements JobCreator { - - @Nullable - @Override - public Job create(@NonNull String tag) { - switch (tag) { - case AppUpdateJob.TAG: - return new AppUpdateJob(); - case RssCheckerJob.TAG: - return new RssCheckerJob(); - case ServerCheckerJob.TAG: - return new ServerCheckerJob(); - default: - return null; - } - } - -} diff --git a/app/src/main/java/org/transdroid/core/service/ServerCheckerJob.java b/app/src/main/java/org/transdroid/core/service/ServerCheckerJob.java index 0903a14e..4e580d25 100644 --- a/app/src/main/java/org/transdroid/core/service/ServerCheckerJob.java +++ b/app/src/main/java/org/transdroid/core/service/ServerCheckerJob.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,41 +20,58 @@ import android.content.Context; import androidx.annotation.NonNull; -import com.evernote.android.job.Job; -import com.evernote.android.job.JobManager; -import com.evernote.android.job.JobRequest; +import androidx.annotation.WorkerThread; +import androidx.work.Constraints; +import androidx.work.PeriodicWorkRequest; +import androidx.work.Worker; +import androidx.work.WorkManager; +import androidx.work.NetworkType; +import androidx.work.WorkerParameters; import org.transdroid.core.app.settings.NotificationSettings; import org.transdroid.core.app.settings.NotificationSettings_; import org.transdroid.core.gui.log.Log_; -public class ServerCheckerJob extends Job { +import java.time.Period; +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +public class ServerCheckerJob extends Worker { static final String TAG = "server_checker"; - private static Integer scheduledJobId; + private static UUID scheduledJobId; + + public ServerCheckerJob(@NonNull Context context, @NonNull WorkerParameters workerParams) { + super(context, workerParams); + } public static void schedule(Context context) { NotificationSettings notificationSettings = NotificationSettings_.getInstance_(context); if (notificationSettings.isEnabledForTorrents()) { Log_.getInstance_(context).d(TAG, "Schedule server checker job"); NotificationChannels.ensureServerCheckerChannel(context, notificationSettings); - scheduledJobId = new JobRequest.Builder(ServerCheckerJob.TAG) - .setPeriodic(notificationSettings.getInvervalInMilliseconds()) - .setRequiredNetworkType(JobRequest.NetworkType.CONNECTED) - .setUpdateCurrent(true) - .build() - .schedule(); + Constraints constraints = new Constraints.Builder() + .setRequiredNetworkType(NetworkType.CONNECTED) + .build(); + PeriodicWorkRequest serverChecker = new PeriodicWorkRequest.Builder(ServerCheckerJob.class, notificationSettings.getInvervalInMilliseconds(), TimeUnit.MILLISECONDS) + .addTag(ServerCheckerJob.TAG) + .setConstraints(constraints) + .build(); + WorkManager.getInstance(context).cancelAllWorkByTag(ServerCheckerJob.TAG); + WorkManager.getInstance(context).enqueue(serverChecker); + scheduledJobId = serverChecker.getId(); } else if (scheduledJobId != null) { Log_.getInstance_(context).d(TAG, "Cancel server checker job"); - JobManager.instance().cancel(scheduledJobId); + WorkManager.getInstance(context).cancelWorkById(scheduledJobId); + scheduledJobId = null; } } @NonNull @Override - protected Result onRunJob(@NonNull Params params) { - return ServerCheckerJobRunner_.getInstance_(getContext()).run(); + public Result doWork() { + return ServerCheckerJobRunner_.getInstance_(getApplicationContext()).run(); } } diff --git a/app/src/main/java/org/transdroid/core/service/ServerCheckerJobRunner.java b/app/src/main/java/org/transdroid/core/service/ServerCheckerJobRunner.java index c6b00d0b..04104927 100644 --- a/app/src/main/java/org/transdroid/core/service/ServerCheckerJobRunner.java +++ b/app/src/main/java/org/transdroid/core/service/ServerCheckerJobRunner.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,7 +22,7 @@ import android.content.Context; import android.content.Intent; import android.text.TextUtils; import androidx.core.app.NotificationCompat; -import com.evernote.android.job.Job; +import androidx.work.Worker; import org.androidannotations.annotations.Bean; import org.androidannotations.annotations.EBean; import org.androidannotations.annotations.RootContext; @@ -61,12 +61,12 @@ public class ServerCheckerJobRunner { @SystemService protected NotificationManager notificationManager; - Job.Result run() { + Worker.Result run() { if (!connectivityHelper.shouldPerformBackgroundActions() || !notificationSettings.isEnabledForTorrents()) { log.d(this, "Skip the server checker service, as background data is disabled, the service is disabled or we are not connected."); - return Job.Result.RESCHEDULE; + return Worker.Result.retry(); } int notifyBase = 10000; @@ -207,7 +207,7 @@ public class ServerCheckerJobRunner { } - return Job.Result.SUCCESS; + return Worker.Result.success(); } private Boolean findLastDoneStat(JSONArray lastStats, Torrent torrent) { diff --git a/app/src/main/java/org/transdroid/core/widget/ListWidgetConfig.java b/app/src/main/java/org/transdroid/core/widget/ListWidgetConfig.java index a4466c0c..7db5a7a2 100644 --- a/app/src/main/java/org/transdroid/core/widget/ListWidgetConfig.java +++ b/app/src/main/java/org/transdroid/core/widget/ListWidgetConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/widget/ListWidgetConfigActivity.java b/app/src/main/java/org/transdroid/core/widget/ListWidgetConfigActivity.java index 7ca10ef1..38e9ed2a 100644 --- a/app/src/main/java/org/transdroid/core/widget/ListWidgetConfigActivity.java +++ b/app/src/main/java/org/transdroid/core/widget/ListWidgetConfigActivity.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -64,7 +64,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -@TargetApi(Build.VERSION_CODES.HONEYCOMB) @EActivity(resName = "activity_widgetconfig") public class ListWidgetConfigActivity extends AppCompatActivity { diff --git a/app/src/main/java/org/transdroid/core/widget/ListWidgetPreviewAdapter.java b/app/src/main/java/org/transdroid/core/widget/ListWidgetPreviewAdapter.java index 6872c6bb..bdeb0651 100644 --- a/app/src/main/java/org/transdroid/core/widget/ListWidgetPreviewAdapter.java +++ b/app/src/main/java/org/transdroid/core/widget/ListWidgetPreviewAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/transdroid/core/widget/ListWidgetProvider.java b/app/src/main/java/org/transdroid/core/widget/ListWidgetProvider.java index 281a43ab..6510a642 100644 --- a/app/src/main/java/org/transdroid/core/widget/ListWidgetProvider.java +++ b/app/src/main/java/org/transdroid/core/widget/ListWidgetProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -45,7 +45,6 @@ import org.transdroid.core.service.ControlService_; * * @author Eric Kok */ -@TargetApi(Build.VERSION_CODES.HONEYCOMB) @EReceiver public class ListWidgetProvider extends AppWidgetProvider { diff --git a/app/src/main/java/org/transdroid/core/widget/ListWidgetViewsService.java b/app/src/main/java/org/transdroid/core/widget/ListWidgetViewsService.java index 96c6c6db..a12242ae 100644 --- a/app/src/main/java/org/transdroid/core/widget/ListWidgetViewsService.java +++ b/app/src/main/java/org/transdroid/core/widget/ListWidgetViewsService.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 Eric Kok et al. + * Copyright 2010-2024 Eric Kok et al. * * Transdroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -54,7 +54,6 @@ import java.util.List; * * @author Eric Kok */ -@TargetApi(Build.VERSION_CODES.HONEYCOMB) @EService public class ListWidgetViewsService extends RemoteViewsService { @@ -65,7 +64,6 @@ public class ListWidgetViewsService extends RemoteViewsService { } -@TargetApi(Build.VERSION_CODES.HONEYCOMB) class WidgetViewsFactory implements RemoteViewsService.RemoteViewsFactory { private final Context context; diff --git a/app/src/main/java/org/transdroid/daemon/Daemon.java b/app/src/main/java/org/transdroid/daemon/Daemon.java index 4b2ffef1..ae4d6e9c 100644 --- a/app/src/main/java/org/transdroid/daemon/Daemon.java +++ b/app/src/main/java/org/transdroid/daemon/Daemon.java @@ -337,7 +337,7 @@ public enum Daemon { } public static boolean supportsStoppingStarting(Daemon type) { - return type == uTorrent || type == rTorrent || type == BitTorrent || type == BitComet || type == Dummy; + return type == uTorrent || type == rTorrent || type == BitTorrent || type == Dummy; } public static boolean supportsForcedStarting(Daemon type) { diff --git a/app/src/main/java/org/transdroid/daemon/Label.java b/app/src/main/java/org/transdroid/daemon/Label.java index a3409cb7..23f881ea 100644 --- a/app/src/main/java/org/transdroid/daemon/Label.java +++ b/app/src/main/java/org/transdroid/daemon/Label.java @@ -69,6 +69,12 @@ public final class Label implements Parcelable, Comparable