diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e665c3bc..a23ba7b5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -14,7 +14,7 @@
-
+
diff --git a/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt b/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt
index 63183d73..784ff455 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt
@@ -10,6 +10,7 @@ import android.graphics.Rect
import android.net.Uri
import android.os.Build
import android.os.Bundle
+import android.provider.Settings
import android.util.AttributeSet
import android.util.Log
import android.view.KeyEvent
@@ -23,6 +24,7 @@ import androidx.activity.OnBackPressedCallback
import androidx.activity.result.ActivityResultLauncher
import androidx.annotation.IdRes
import androidx.annotation.MainThread
+import androidx.annotation.RequiresApi
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.ConstraintLayout
@@ -150,6 +152,7 @@ import com.lagradost.cloudstream3.utils.UIHelper.requestRW
import com.lagradost.cloudstream3.utils.UIHelper.toPx
import com.lagradost.cloudstream3.utils.USER_PROVIDER_API
import com.lagradost.cloudstream3.utils.USER_SELECTED_HOMEPAGE_API
+import com.lagradost.cloudstream3.utils.UserPreferenceDelegate
import com.lagradost.nicehttp.Requests
import com.lagradost.nicehttp.ResponseParser
import com.lagradost.safefile.SafeFile
@@ -165,7 +168,6 @@ import kotlin.math.absoluteValue
import kotlin.reflect.KClass
import kotlin.system.exitProcess
-
//https://github.com/videolan/vlc-android/blob/3706c4be2da6800b3d26344fc04fab03ffa4b860/application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt#L1898
//https://wiki.videolan.org/Android_Player_Intents/
@@ -321,6 +323,9 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
*/
val reloadLibraryEvent = Event()
+ /** For battery optimisation **/
+ private var isAppOptimised : Boolean by UserPreferenceDelegate("iAppOptimised", false)
+
/**
* @return true if the str has launched an app task (be it successful or not)
@@ -1174,8 +1179,12 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
null
}
- changeStatusBarState(isEmulatorSettings())
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !isAppOptimised && !isTrueTvSettings()
+ && !isTvSettings() && !isEmulatorSettings()) {
+ showBatteryOptimizationDialog()
+ }
+ changeStatusBarState(isEmulatorSettings())
// Automatically enable jsdelivr if cant connect to raw.githubusercontent.com
if (this.getKey(getString(R.string.jsdelivr_proxy_key)) == null && isNetworkAvailable()) {
main {
@@ -1747,4 +1756,20 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
false
}
}
+
+ @RequiresApi(Build.VERSION_CODES.M)
+ private fun showBatteryOptimizationDialog() {
+ AlertDialog.Builder(this)
+ .setTitle(R.string.battery_dialog_title)
+ .setMessage(R.string.battery_dialog_message)
+ .setPositiveButton(R.string.ok) { _, _ ->
+ isAppOptimised = true
+ val intent = Intent()
+ intent.action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS
+ intent.data = Uri.fromParts("package", packageName, null)
+ startActivity(intent)
+ }
+ .setNegativeButton(R.string.cancel, null)
+ .show()
+ }
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index eb0dc3a8..fb034a37 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -646,6 +646,9 @@
Are you sure you want to exit\?
Yes
No
+ OK
+ Battery Optimization
+ To ensure proper Downloads and Notifications, please set Battery Optimization for CloudStream app to Unrestricted.
Downloading app update…
Installing app update…
Could not install the new version of the app