From 1881be24fcd33181367efc5a37711884def5f00e Mon Sep 17 00:00:00 2001
From: Luna712 <142361265+Luna712@users.noreply.github.com>
Date: Thu, 2 Nov 2023 13:03:09 -0600
Subject: [PATCH] Fix some deprecations and other warnings
* Replace deprecated onBackPressed()
* Fixes some AndroidManifest warnings
* Use android:dataExtractionRules for Android 12+
* Add tools:ignore for ScopedStorage and QueryAllPackagesPermission
* Make VideoDownloadRestartReceiver not exported (fixes "
Exported receiver does not require permission") - if this was incorrect I can revert this part
* Bump tools:targetApi
* Enable android:enableOnBackInvokedCallback for predictive back gestures on Android 13 (if enabled in developer options) and Android 14 (also fixes "OnBackInvokedCallback is not enabled for the application." which is commonly seen in logcat)
---
app/src/main/AndroidManifest.xml | 16 ++++--
.../lagradost/cloudstream3/MainActivity.kt | 55 +++++++++----------
.../ui/download/DownloadChildFragment.kt | 6 +-
.../ui/settings/SettingsFragment.kt | 4 +-
.../ui/settings/extensions/PluginsFragment.kt | 4 +-
.../lagradost/cloudstream3/utils/UIHelper.kt | 4 +-
.../main/res/xml/data_extraction_rules.xml | 3 +
7 files changed, 49 insertions(+), 43 deletions(-)
create mode 100644 app/src/main/res/xml/data_extraction_rules.xml
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 453c1fae..a71c5ecb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -6,7 +6,7 @@
-
+
@@ -17,7 +17,11 @@
-
+
+
+
+ tools:targetApi="tiramisu">
-
+ android:exported="false">
+
diff --git a/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt b/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt
index a41028bd..22fa330d 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt
@@ -19,6 +19,7 @@ import android.view.View
import android.view.ViewGroup
import android.view.WindowManager
import android.widget.Toast
+import androidx.activity.OnBackPressedCallback
import androidx.activity.result.ActivityResultLauncher
import androidx.annotation.IdRes
import androidx.annotation.MainThread
@@ -132,7 +133,6 @@ import com.lagradost.cloudstream3.utils.DataStore.setKey
import com.lagradost.cloudstream3.utils.DataStoreHelper
import com.lagradost.cloudstream3.utils.DataStoreHelper.migrateResumeWatching
import com.lagradost.cloudstream3.utils.Event
-import com.lagradost.cloudstream3.utils.IOnBackPressed
import com.lagradost.cloudstream3.utils.InAppUpdater.Companion.runAutoUpdate
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showBottomDialog
import com.lagradost.cloudstream3.utils.UIHelper.changeStatusBarState
@@ -650,34 +650,6 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
builder.show().setDefaultFocus()
}
- private fun backPressed() {
- this.window?.navigationBarColor =
- this.colorFromAttribute(R.attr.primaryGrayBackground)
- this.updateLocale()
- this.updateLocale()
-
- val navHostFragment =
- supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as? NavHostFragment
- val navController = navHostFragment?.navController
- val isAtHome =
- navController?.currentDestination?.matchDestination(R.id.navigation_home) == true
-
- if (isAtHome && isTvSettings()) {
- showConfirmExitDialog()
- } else {
- super.onBackPressed()
- }
- }
-
- override fun onBackPressed() {
- ((supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as? NavHostFragment?)?.childFragmentManager?.primaryNavigationFragment as? IOnBackPressed)?.onBackPressed()
- ?.let { runNormal ->
- if (runNormal) backPressed()
- } ?: run {
- backPressed()
- }
- }
-
override fun onDestroy() {
val broadcastIntent = Intent()
broadcastIntent.action = "restart_service"
@@ -1087,6 +1059,7 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
} catch (_: Throwable) {
}
}
+
override fun onCreate(savedInstanceState: Bundle?) {
app.initClient(this)
val settingsManager = PreferenceManager.getDefaultSharedPreferences(this)
@@ -1384,6 +1357,12 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
this.putString(SearchFragment.SEARCH_QUERY, nextSearchQuery)
}
}
+
+ if (isTvSettings()) {
+ if (navDestination.matchDestination(R.id.navigation_home)) {
+ attachBackPressedCallback()
+ } else detachBackPressedCallback()
+ }
}
//val navController = findNavController(R.id.nav_host_fragment)
@@ -1597,7 +1576,25 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
// showToast(this, currentFocus.toString(), Toast.LENGTH_LONG)
// }
// }
+ }
+ private var backPressedCallback: OnBackPressedCallback? = null
+
+ private fun attachBackPressedCallback() {
+ if (backPressedCallback == null) {
+ backPressedCallback = object : OnBackPressedCallback(true) {
+ override fun handleOnBackPressed() {
+ showConfirmExitDialog()
+ }
+ }
+ }
+
+ backPressedCallback?.isEnabled = true
+ onBackPressedDispatcher.addCallback(this, backPressedCallback!!)
+ }
+
+ private fun detachBackPressedCallback() {
+ backPressedCallback?.isEnabled = false
}
suspend fun checkGithubConnectivity(): Boolean {
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadChildFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadChildFragment.kt
index f62482ed..c3ec2bbd 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadChildFragment.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadChildFragment.kt
@@ -60,7 +60,7 @@ class DownloadChildFragment : Fragment() {
}
}.sortedBy { it.data.episode + (it.data.season ?: 0) * 100000 }
if (eps.isEmpty()) {
- activity?.onBackPressed()
+ activity?.onBackPressedDispatcher?.onBackPressed()
return@main
}
@@ -78,7 +78,7 @@ class DownloadChildFragment : Fragment() {
val folder = arguments?.getString("folder")
val name = arguments?.getString("name")
if (folder == null) {
- activity?.onBackPressed() // TODO FIX
+ activity?.onBackPressedDispatcher?.onBackPressed() // TODO FIX
return
}
fixPaddingStatusbar(binding?.downloadChildRoot)
@@ -87,7 +87,7 @@ class DownloadChildFragment : Fragment() {
title = name
setNavigationIcon(R.drawable.ic_baseline_arrow_back_24)
setNavigationOnClickListener {
- activity?.onBackPressed()
+ activity?.onBackPressedDispatcher?.onBackPressed()
}
}
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsFragment.kt
index a4d19eba..08990b4d 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsFragment.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsFragment.kt
@@ -63,7 +63,7 @@ class SettingsFragment : Fragment() {
setTitle(title)
setNavigationIcon(R.drawable.ic_baseline_arrow_back_24)
setNavigationOnClickListener {
- activity?.onBackPressed()
+ activity?.onBackPressedDispatcher?.onBackPressed()
}
}
fixPaddingStatusbar(settingsToolbar)
@@ -78,7 +78,7 @@ class SettingsFragment : Fragment() {
setNavigationIcon(R.drawable.ic_baseline_arrow_back_24)
children.firstOrNull { it is ImageView }?.tag = getString(R.string.tv_no_focus_tag)
setNavigationOnClickListener {
- activity?.onBackPressed()
+ activity?.onBackPressedDispatcher?.onBackPressed()
}
}
fixPaddingStatusbar(settingsToolbar)
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/PluginsFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/PluginsFragment.kt
index 172ea659..62702a98 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/PluginsFragment.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/PluginsFragment.kt
@@ -69,7 +69,7 @@ class PluginsFragment : Fragment() {
val isLocal = arguments?.getBoolean(PLUGINS_BUNDLE_LOCAL) == true
if (url == null || name == null) {
- activity?.onBackPressed()
+ activity?.onBackPressedDispatcher?.onBackPressed()
return
}
@@ -117,7 +117,7 @@ class PluginsFragment : Fragment() {
if (searchView?.isIconified == false) {
searchView.isIconified = true
} else {
- activity?.onBackPressed()
+ activity?.onBackPressedDispatcher?.onBackPressed()
}
}
searchView?.setOnQueryTextFocusChangeListener { _, hasFocus ->
diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/UIHelper.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/UIHelper.kt
index d5357e0c..ab63867f 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/utils/UIHelper.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/utils/UIHelper.kt
@@ -418,7 +418,7 @@ object UIHelper {
}
fun FragmentActivity.popCurrentPage() {
- this.onBackPressed()
+ this.onBackPressedDispatcher.onBackPressed()
/*val currentFragment = supportFragmentManager.fragments.lastOrNull {
it.isVisible
} ?: return
@@ -438,7 +438,7 @@ object UIHelper {
val currentFragment = supportFragmentManager.fragments.lastOrNull {
it.isVisible
}
- ?: //this.onBackPressed()
+ ?: //this.onBackPressedDispatcher.onBackPressed()
return
/*
diff --git a/app/src/main/res/xml/data_extraction_rules.xml b/app/src/main/res/xml/data_extraction_rules.xml
new file mode 100644
index 00000000..ae9ece33
--- /dev/null
+++ b/app/src/main/res/xml/data_extraction_rules.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file