mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-24 03:42:15 +00:00
Add: Ignore battery optimization's dialog (to fix crashes on A12+)
This commit is contained in:
parent
00f6822cc5
commit
57f2944697
@ -37,7 +37,8 @@ object Preferences {
|
|||||||
Key.Theme,
|
Key.Theme,
|
||||||
Key.DefaultTab,
|
Key.DefaultTab,
|
||||||
Key.UpdateNotify,
|
Key.UpdateNotify,
|
||||||
Key.UpdateUnstable
|
Key.UpdateUnstable,
|
||||||
|
Key.IgnoreIgnoreBatteryOptimization
|
||||||
).map { Pair(it.name, it) }.toMap()
|
).map { Pair(it.name, it) }.toMap()
|
||||||
|
|
||||||
fun init(context: Context) {
|
fun init(context: Context) {
|
||||||
@ -178,6 +179,9 @@ object Preferences {
|
|||||||
|
|
||||||
object UpdateNotify : Key<Boolean>("update_notify", Value.BooleanValue(true))
|
object UpdateNotify : Key<Boolean>("update_notify", Value.BooleanValue(true))
|
||||||
object UpdateUnstable : Key<Boolean>("update_unstable", Value.BooleanValue(false))
|
object UpdateUnstable : Key<Boolean>("update_unstable", Value.BooleanValue(false))
|
||||||
|
|
||||||
|
object IgnoreIgnoreBatteryOptimization :
|
||||||
|
Key<Boolean>("ignore_ignore_battery_optimization", Value.BooleanValue(false))
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class AutoSync(override val valueString: String) : Enumeration<AutoSync> {
|
sealed class AutoSync(override val valueString: String) : Enumeration<AutoSync> {
|
||||||
|
@ -3,6 +3,7 @@ package com.looker.droidify.ui.activities
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.os.PowerManager
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.inputmethod.InputMethodManager
|
import android.view.inputmethod.InputMethodManager
|
||||||
@ -31,6 +32,7 @@ import com.looker.droidify.ui.fragments.Source
|
|||||||
import com.looker.droidify.ui.viewmodels.MainActivityViewModelX
|
import com.looker.droidify.ui.viewmodels.MainActivityViewModelX
|
||||||
import com.looker.droidify.utility.extension.android.Android
|
import com.looker.droidify.utility.extension.android.Android
|
||||||
import com.looker.droidify.utility.extension.text.nullIfEmpty
|
import com.looker.droidify.utility.extension.text.nullIfEmpty
|
||||||
|
import com.looker.droidify.utility.showBatteryOptimizationDialog
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlin.properties.Delegates
|
import kotlin.properties.Delegates
|
||||||
|
|
||||||
@ -52,6 +54,7 @@ class MainActivityX : AppCompatActivity() {
|
|||||||
lateinit var appBarConfiguration: AppBarConfiguration
|
lateinit var appBarConfiguration: AppBarConfiguration
|
||||||
private lateinit var navController: NavController
|
private lateinit var navController: NavController
|
||||||
private val viewModel: MainActivityViewModelX by viewModels()
|
private val viewModel: MainActivityViewModelX by viewModels()
|
||||||
|
private lateinit var powerManager: PowerManager
|
||||||
val menuSetup = MutableLiveData<Boolean>()
|
val menuSetup = MutableLiveData<Boolean>()
|
||||||
|
|
||||||
val syncConnection = Connection(SyncService::class.java, onBind = { _, _ ->
|
val syncConnection = Connection(SyncService::class.java, onBind = { _, _ ->
|
||||||
@ -95,6 +98,7 @@ class MainActivityX : AppCompatActivity() {
|
|||||||
setupActionBarWithNavController(navController, appBarConfiguration)
|
setupActionBarWithNavController(navController, appBarConfiguration)
|
||||||
binding.bottomNavigation.selectedItemId = currentTab
|
binding.bottomNavigation.selectedItemId = currentTab
|
||||||
|
|
||||||
|
powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager
|
||||||
if (savedInstanceState == null && (intent.flags and Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) {
|
if (savedInstanceState == null && (intent.flags and Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) {
|
||||||
handleIntent(intent)
|
handleIntent(intent)
|
||||||
}
|
}
|
||||||
@ -117,6 +121,8 @@ class MainActivityX : AppCompatActivity() {
|
|||||||
super.onResume()
|
super.onResume()
|
||||||
if (currentTheme != Preferences[Preferences.Key.Theme].getResId(resources.configuration))
|
if (currentTheme != Preferences[Preferences.Key.Theme].getResId(resources.configuration))
|
||||||
recreate()
|
recreate()
|
||||||
|
if (!powerManager.isIgnoringBatteryOptimizations(this.packageName) && !Preferences[Preferences.Key.IgnoreIgnoreBatteryOptimization])
|
||||||
|
showBatteryOptimizationDialog()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onSupportNavigateUp(): Boolean {
|
override fun onSupportNavigateUp(): Boolean {
|
||||||
|
@ -3,11 +3,19 @@ package com.looker.droidify.utility
|
|||||||
import android.app.ActivityManager
|
import android.app.ActivityManager
|
||||||
import android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
|
import android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
|
||||||
import android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE
|
import android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE
|
||||||
|
import android.content.ActivityNotFoundException
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.DialogInterface
|
||||||
|
import android.content.Intent
|
||||||
import android.content.pm.PackageInfo
|
import android.content.pm.PackageInfo
|
||||||
import android.content.pm.Signature
|
import android.content.pm.Signature
|
||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
|
import android.net.Uri
|
||||||
|
import android.os.PowerManager
|
||||||
|
import android.provider.Settings
|
||||||
|
import android.widget.Toast
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
import com.looker.droidify.BuildConfig
|
import com.looker.droidify.BuildConfig
|
||||||
import com.looker.droidify.PREFS_LANGUAGE_DEFAULT
|
import com.looker.droidify.PREFS_LANGUAGE_DEFAULT
|
||||||
import com.looker.droidify.R
|
import com.looker.droidify.R
|
||||||
@ -194,3 +202,27 @@ val isBlackTheme: Boolean
|
|||||||
is Preferences.Theme.AmoledSystem -> true
|
is Preferences.Theme.AmoledSystem -> true
|
||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Context.showBatteryOptimizationDialog() {
|
||||||
|
AlertDialog.Builder(this)
|
||||||
|
.setTitle(R.string.ignore_battery_optimization_title)
|
||||||
|
.setMessage(R.string.ignore_battery_optimization_message)
|
||||||
|
.setPositiveButton(R.string.dialog_approve) { dialog: DialogInterface?, _: Int ->
|
||||||
|
val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
|
||||||
|
intent.data = Uri.parse("package:" + this.packageName)
|
||||||
|
try {
|
||||||
|
startActivity(intent)
|
||||||
|
} catch (e: ActivityNotFoundException) {
|
||||||
|
Toast.makeText(
|
||||||
|
this,
|
||||||
|
R.string.ignore_battery_optimization_not_supported,
|
||||||
|
Toast.LENGTH_LONG
|
||||||
|
).show()
|
||||||
|
Preferences[Preferences.Key.IgnoreIgnoreBatteryOptimization] = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.setNeutralButton(R.string.dialog_refuse) { _: DialogInterface?, _: Int ->
|
||||||
|
Preferences[Preferences.Key.IgnoreIgnoreBatteryOptimization] = true
|
||||||
|
}
|
||||||
|
.show()
|
||||||
|
}
|
@ -189,4 +189,9 @@
|
|||||||
<string name="default_tab">Default Tab</string>
|
<string name="default_tab">Default Tab</string>
|
||||||
<string name="pending">Pending</string>
|
<string name="pending">Pending</string>
|
||||||
<string name="installing">Installing</string>
|
<string name="installing">Installing</string>
|
||||||
|
<string name="ignore_battery_optimization_title">Ignore Battery Optimization</string>
|
||||||
|
<string name="ignore_battery_optimization_message">Starting Android 12 there\'s restrictions on running foreground services causing the app to crash on downloads. To prevent this, you should turn off the battery optimization</string>
|
||||||
|
<string name="ignore_battery_optimization_not_supported">The device doesn\'t support ignoring battery optimizations!</string>
|
||||||
|
<string name="dialog_refuse">Don\'t need it</string>
|
||||||
|
<string name="dialog_approve">Let\'s do it!</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user