diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragmentPhone.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragmentPhone.kt
index 2e9f1c48..d31877d2 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragmentPhone.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragmentPhone.kt
@@ -33,7 +33,6 @@ import com.google.android.gms.cast.framework.CastState
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.lagradost.cloudstream3.APIHolder
import com.lagradost.cloudstream3.APIHolder.updateHasTrailers
-import com.lagradost.cloudstream3.CommonActivity
import com.lagradost.cloudstream3.CommonActivity.showToast
import com.lagradost.cloudstream3.DubStatus
import com.lagradost.cloudstream3.LoadResponse
@@ -448,7 +447,7 @@ open class ResultFragmentPhone : FullScreenPlayer() {
val name = (viewModel.page.value as? Resource.Success)?.value?.title
?: txt(R.string.no_data).asStringNull(context) ?: ""
- CommonActivity.showToast(txt(message, name), Toast.LENGTH_SHORT)
+ showToast(txt(message, name), Toast.LENGTH_SHORT)
}
}
resultFavorite.setOnClickListener {
@@ -463,7 +462,7 @@ open class ResultFragmentPhone : FullScreenPlayer() {
val name = (viewModel.page.value as? Resource.Success)?.value?.title
?: txt(R.string.no_data).asStringNull(context) ?: ""
- CommonActivity.showToast(txt(message, name), Toast.LENGTH_SHORT)
+ showToast(txt(message, name), Toast.LENGTH_SHORT)
}
}
mediaRouteButton.apply {
@@ -471,7 +470,7 @@ open class ResultFragmentPhone : FullScreenPlayer() {
alpha = if (chromecastSupport) 1f else 0.3f
if (!chromecastSupport) {
setOnClickListener {
- CommonActivity.showToast(
+ showToast(
R.string.no_chromecast_support_toast,
Toast.LENGTH_LONG
)
@@ -646,7 +645,8 @@ open class ResultFragmentPhone : FullScreenPlayer() {
),
null
) { click ->
- openBatteryOptimizationSettings(requireContext())
+ runCatching { context ?: requireContext() }.getOrNull()
+ ?.let { openBatteryOptimizationSettings(it) }
when (click.action) {
DOWNLOAD_ACTION_DOWNLOAD -> {
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsGeneral.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsGeneral.kt
index 08dc3729..9739c65d 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsGeneral.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsGeneral.kt
@@ -32,6 +32,7 @@ import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setPadd
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setToolBarScrollFlags
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setUpToolbar
import com.lagradost.cloudstream3.utils.BatteryOptimizationChecker.intentOpenAppInfo
+import com.lagradost.cloudstream3.utils.BatteryOptimizationChecker.isAppRestricted
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showBottomDialog
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showDialog
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showMultiDialog
@@ -204,8 +205,14 @@ class SettingsGeneral : PreferenceFragmentCompat() {
}
getPref(R.string.battery_optimisation_key)?.setOnPreferenceClickListener {
- intentOpenAppInfo(requireContext())
- return@setOnPreferenceClickListener true
+ val ctx = context ?: requireContext()
+
+ if (isAppRestricted(ctx)) {
+ intentOpenAppInfo(ctx)
+ } else {
+ showToast(R.string.app_unrestricted_toast)
+ }
+ true
}
fun showAdd() {
diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/PowerManagerAPI.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/PowerManagerAPI.kt
index 2c476562..1a2803d3 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/utils/PowerManagerAPI.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/utils/PowerManagerAPI.kt
@@ -11,6 +11,7 @@ import android.util.Log
import androidx.appcompat.app.AlertDialog
import androidx.preference.PreferenceManager
import com.lagradost.cloudstream3.BuildConfig
+import com.lagradost.cloudstream3.CommonActivity.showToast
import com.lagradost.cloudstream3.R
const val packageName = BuildConfig.APPLICATION_ID
@@ -18,7 +19,7 @@ const val TAG = "PowerManagerAPI"
object BatteryOptimizationChecker {
- private fun isAppRestricted(context: Context?): Boolean {
+ fun isAppRestricted(context: Context?): Boolean {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null) {
val powerManager = context.getSystemService(Context.POWER_SERVICE) as PowerManager
return !powerManager.isIgnoringBatteryOptimizations(context.packageName)
@@ -72,7 +73,8 @@ object BatteryOptimizationChecker {
.setData(Uri.fromParts("package", packageName, null))
context.startActivity(intent, Bundle())
} catch (t: Throwable) {
- Log.e(TAG, "Unable to invoke intent for App info.")
+ Log.e(TAG, "Unable to invoke Intent for - CS3/App Info")
+ showToast(R.string.app_info_intent_error)
}
}
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 6eab790d..52640246 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -654,7 +654,8 @@
Disable Battery optimization
To ensure proper downloads and notifications, please set battery optimization for CloudStream app to Unrestricted. You can change this later from General Settings.
battery_optimisation
- App is already set to unrestricted
+ App battery usage is already set to unrestricted
+ Unable to open CloudStream\'s App info.
Downloading app update…
Installing app update…
Could not install the new version of the app