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