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