Improve requesting app runs in background

This commit is contained in:
Brandon Presley 2022-08-30 23:06:09 +12:00
parent 81fd21be48
commit a1cd4e8080
2 changed files with 17 additions and 4 deletions

View File

@ -223,7 +223,7 @@ export default function SettingsPage() {
show={battery} show={battery}
setShow={setBattery} setShow={setBattery}
onOk={() => { onOk={() => {
NativeModules.AlarmModule.openSettings(); NativeModules.AlarmModule.ignoreBattery();
setBattery(false); setBattery(false);
}}> }}>
Disable battery optimizations for Massive to use rest timers. Disable battery optimizations for Massive to use rest timers.

View File

@ -1,5 +1,7 @@
package com.massive package com.massive
import android.annotation.SuppressLint
import android.content.ActivityNotFoundException
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
@ -7,7 +9,9 @@ import android.os.Build
import android.os.PowerManager import android.os.PowerManager
import android.provider.Settings import android.provider.Settings
import android.util.Log import android.util.Log
import android.widget.Toast
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import androidx.core.content.ContextCompat.startActivity
import com.facebook.react.bridge.Callback import com.facebook.react.bridge.Callback
import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactContextBaseJavaModule import com.facebook.react.bridge.ReactContextBaseJavaModule
@ -45,12 +49,21 @@ class AlarmModule internal constructor(context: ReactApplicationContext?) :
} }
} }
@SuppressLint("BatteryLife")
@RequiresApi(Build.VERSION_CODES.M) @RequiresApi(Build.VERSION_CODES.M)
@ReactMethod @ReactMethod
fun openSettings() { fun ignoreBattery() {
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
intent.data = Uri.parse("package:" + reactApplicationContext.packageName) intent.data = Uri.parse("package:" + reactApplicationContext.packageName)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
reactApplicationContext.startActivity(intent) try {
reactApplicationContext.startActivity(intent)
} catch (e: ActivityNotFoundException) {
Toast.makeText(
reactApplicationContext,
"Requests to ignore battery optimizations are disabled on your device.",
Toast.LENGTH_LONG
).show()
}
} }
} }