Add ignore battery optimizations card
This commit is contained in:
@@ -4,6 +4,7 @@ import android.app.Application
|
||||
import android.app.NotificationManager
|
||||
import android.content.Context
|
||||
import android.net.ConnectivityManager
|
||||
import android.os.PowerManager
|
||||
import androidx.core.content.getSystemService
|
||||
import go.Seq
|
||||
import io.nekohasekai.sfa.bg.UpdateProfileWork
|
||||
@@ -35,6 +36,7 @@ class Application : Application() {
|
||||
val notification by lazy { application.getSystemService<NotificationManager>()!! }
|
||||
val connectivity by lazy { application.getSystemService<ConnectivityManager>()!! }
|
||||
val packageManager by lazy { application.packageManager }
|
||||
val powerManager by lazy { application.getSystemService<PowerManager>()!! }
|
||||
}
|
||||
|
||||
}
|
||||
@@ -268,7 +268,8 @@ class DashboardFragment : Fragment(), CommandClientHandler {
|
||||
return
|
||||
}
|
||||
runCatching {
|
||||
Libbox.newStandaloneCommandClient(mainActivity.filesDir.absolutePath).serviceReload()
|
||||
Libbox.newStandaloneCommandClient(mainActivity.filesDir.absolutePath)
|
||||
.serviceReload()
|
||||
}.onFailure {
|
||||
withContext(Dispatchers.Main) {
|
||||
mainActivity.errorDialogBuilder(it).show()
|
||||
|
||||
@@ -1,14 +1,19 @@
|
||||
package io.nekohasekai.sfa.ui.main
|
||||
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.core.view.isGone
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.microsoft.appcenter.AppCenter
|
||||
import com.microsoft.appcenter.distribute.Distribute
|
||||
import io.nekohasekai.libbox.Libbox
|
||||
import io.nekohasekai.sfa.Application
|
||||
import io.nekohasekai.sfa.R
|
||||
import io.nekohasekai.sfa.constant.EnabledType
|
||||
import io.nekohasekai.sfa.database.Settings
|
||||
@@ -35,6 +40,14 @@ class SettingsFragment : Fragment() {
|
||||
return binding.root
|
||||
}
|
||||
|
||||
private val requestIgnoreBatteryOptimizations = registerForActivityResult(
|
||||
ActivityResultContracts.StartActivityForResult()
|
||||
) { _ ->
|
||||
lifecycleScope.launch(Dispatchers.IO) {
|
||||
reloadSettings()
|
||||
}
|
||||
}
|
||||
|
||||
private fun onCreate() {
|
||||
val activity = activity as MainActivity? ?: return
|
||||
binding.versionText.text = Libbox.version()
|
||||
@@ -80,6 +93,17 @@ class SettingsFragment : Fragment() {
|
||||
Settings.disableMemoryLimit = !newValue
|
||||
}
|
||||
}
|
||||
binding.dontKillMyAppButton.setOnClickListener {
|
||||
it.context.launchCustomTab("https://dontkillmyapp.com/")
|
||||
}
|
||||
binding.requestIgnoreBatteryOptimizationsButton.setOnClickListener {
|
||||
requestIgnoreBatteryOptimizations.launch(
|
||||
Intent(
|
||||
android.provider.Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,
|
||||
Uri.parse("package:${Application.application.packageName}")
|
||||
)
|
||||
)
|
||||
}
|
||||
binding.communityButton.setOnClickListener {
|
||||
it.context.launchCustomTab("https://community.sagernet.org/")
|
||||
}
|
||||
@@ -96,6 +120,8 @@ class SettingsFragment : Fragment() {
|
||||
)
|
||||
val appCenterEnabled = Settings.analyticsAllowed == Settings.ANALYSIS_ALLOWED
|
||||
val checkUpdateEnabled = Settings.checkUpdateEnabled
|
||||
val removeBackgroudPermissionPage =
|
||||
Application.powerManager.isIgnoringBatteryOptimizations(Application.application.packageName)
|
||||
withContext(Dispatchers.Main) {
|
||||
binding.dataSizeText.text = dataSize
|
||||
binding.appCenterEnabled.text = EnabledType.from(appCenterEnabled).name
|
||||
@@ -105,6 +131,7 @@ class SettingsFragment : Fragment() {
|
||||
binding.checkUpdateEnabled.setSimpleItems(R.array.enabled)
|
||||
binding.disableMemoryLimit.text = EnabledType.from(!Settings.disableMemoryLimit).name
|
||||
binding.disableMemoryLimit.setSimpleItems(R.array.enabled)
|
||||
binding.backgroundPermissionCard.isGone = removeBackgroudPermissionPage
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user