MainActivity: Warn users if battery optimizations are enabled
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -21,12 +21,14 @@
|
||||
package com.aurora.store
|
||||
|
||||
import android.Manifest
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.content.res.ColorStateList
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.os.Environment
|
||||
import android.os.PowerManager
|
||||
import android.provider.Settings
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
@@ -54,6 +56,7 @@ import coil.transform.RoundedCornersTransformation
|
||||
import com.aurora.Constants
|
||||
import com.aurora.extensions.accentColor
|
||||
import com.aurora.extensions.applyThemeAccent
|
||||
import com.aurora.extensions.isMAndAbove
|
||||
import com.aurora.extensions.isRAndAbove
|
||||
import com.aurora.extensions.toast
|
||||
import com.aurora.store.data.model.NetworkStatus
|
||||
@@ -219,6 +222,12 @@ class MainActivity : AppCompatActivity() {
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||
menuInflater.inflate(R.menu.menu_main, menu)
|
||||
|
||||
// Show warning if battery optimizations is enabled
|
||||
val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager
|
||||
if (isMAndAbove() && !powerManager.isIgnoringBatteryOptimizations(packageName)) {
|
||||
menu.findItem(R.id.menu_doze_info)?.isVisible = true
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -228,6 +237,10 @@ class MainActivity : AppCompatActivity() {
|
||||
navController.navigate(R.id.downloadFragment)
|
||||
return true
|
||||
}
|
||||
R.id.menu_doze_info -> {
|
||||
navController.navigate(R.id.dozeWarningSheet)
|
||||
return true
|
||||
}
|
||||
}
|
||||
return super.onOptionsItemSelected(item)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.aurora.store.view.ui.sheets
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.os.PowerManager
|
||||
import android.provider.Settings
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import com.aurora.extensions.isMAndAbove
|
||||
import com.aurora.extensions.toast
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.databinding.SheetDozeWarningBinding
|
||||
|
||||
class DozeWarningSheet : BaseBottomSheet() {
|
||||
|
||||
private val startForDozeResult =
|
||||
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
|
||||
context?.let {
|
||||
val powerManager = it.getSystemService(Context.POWER_SERVICE) as PowerManager
|
||||
if (isMAndAbove() && powerManager.isIgnoringBatteryOptimizations(it.packageName)) {
|
||||
toast(R.string.toast_permission_granted)
|
||||
activity?.recreate()
|
||||
} else {
|
||||
toast(R.string.permissions_denied)
|
||||
}
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
}
|
||||
|
||||
private var _binding: SheetDozeWarningBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override fun onCreateContentView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup,
|
||||
savedInstanceState: Bundle?
|
||||
): View {
|
||||
_binding = SheetDozeWarningBinding.inflate(inflater, container, false)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onContentViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.btnSecondary.setOnClickListener { dismissAllowingStateLoss() }
|
||||
binding.btnPrimary.setOnClickListener { requestDozePermission() }
|
||||
}
|
||||
|
||||
private fun requestDozePermission() {
|
||||
if (isMAndAbove()) {
|
||||
val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS).apply {
|
||||
data = Uri.parse("package:${requireContext().packageName}")
|
||||
}
|
||||
startForDozeResult.launch(intent)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user