Include Battery Optiomizations setting only when baresip it noe default calling or messaging app

Allow default messaging app role also when baresip is not default calling app
This commit is contained in:
Juha Heinanen
2026-06-26 16:21:29 +03:00
parent c4b3f8acb4
commit 7fd6722cef
2 changed files with 26 additions and 7 deletions

View File

@ -11,6 +11,8 @@
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
<uses-permission android:name="android.permission.MANAGE_OWN_CALLS" /> <uses-permission android:name="android.permission.MANAGE_OWN_CALLS" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"
tools:ignore="BatteryLife" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

View File

@ -1,6 +1,7 @@
package com.tutpro.baresip package com.tutpro.baresip
import android.Manifest import android.Manifest
import android.annotation.SuppressLint
import android.app.Activity import android.app.Activity
import android.app.Activity.RESULT_OK import android.app.Activity.RESULT_OK
import android.app.role.RoleManager import android.app.role.RoleManager
@ -86,6 +87,7 @@ import com.tutpro.baresip.Utils.copyInputStreamToFile
import java.io.File import java.io.File
import java.io.FileInputStream import java.io.FileInputStream
import java.util.Locale import java.util.Locale
import androidx.core.net.toUri
private var restart = false private var restart = false
private val showRestartDialog = mutableStateOf(false) private val showRestartDialog = mutableStateOf(false)
@ -244,6 +246,9 @@ private fun SettingsContent(
Config.save() Config.save()
} }
} }
val powerManager = ctx.getSystemService(POWER_SERVICE) as PowerManager
viewModel.batteryOptimizations.value =
!powerManager.isIgnoringBatteryOptimizations(ctx.packageName)
} }
} }
lifecycleOwner.lifecycle.addObserver(observer) lifecycleOwner.lifecycle.addObserver(observer)
@ -789,6 +794,7 @@ private fun SettingsContent(
} }
} }
@SuppressLint("BatteryLife")
@Composable @Composable
fun BatteryOptimizations() { fun BatteryOptimizations() {
val batteryOptimizationsTitle = stringResource(R.string.battery_optimizations) val batteryOptimizationsTitle = stringResource(R.string.battery_optimizations)
@ -821,8 +827,17 @@ private fun SettingsContent(
checked = battery, checked = battery,
onCheckedChange = { onCheckedChange = {
viewModel.batteryOptimizations.value = it viewModel.batteryOptimizations.value = it
batterySettingsLauncher.launch( if (it)
Intent(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS)) batterySettingsLauncher.launch(
Intent(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS)
)
else {
val intent =
Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS).apply {
data = "package:${ctx.packageName}".toUri()
}
batterySettingsLauncher.launch(intent)
}
} }
) )
} }
@ -998,8 +1013,7 @@ private fun SettingsContent(
dialerRoleRequest.launch(roleManager.createRequestRoleIntent(RoleManager.ROLE_DIALER)) dialerRoleRequest.launch(roleManager.createRequestRoleIntent(RoleManager.ROLE_DIALER))
} }
else { else {
viewModel.defaultMessaging.value = false try {
try {
dialerRoleRequest.launch(Intent("android.settings.MANAGE_DEFAULT_APPS_SETTINGS")) dialerRoleRequest.launch(Intent("android.settings.MANAGE_DEFAULT_APPS_SETTINGS"))
} catch (e: ActivityNotFoundException) { } catch (e: ActivityNotFoundException) {
Log.e(TAG, "ActivityNotFound exception: ${e.message}") Log.e(TAG, "ActivityNotFound exception: ${e.message}")
@ -1184,11 +1198,14 @@ private fun SettingsContent(
AudioSettings(navController) AudioSettings(navController)
if (VERSION.SDK_INT >= 29) { if (VERSION.SDK_INT >= 29) {
DefaultDialer() DefaultDialer()
DefaultMessaging()
val defaultDialer by viewModel.defaultDialer.collectAsState() val defaultDialer by viewModel.defaultDialer.collectAsState()
if (defaultDialer) val defaultMessaging by viewModel.defaultMessaging.collectAsState()
DefaultMessaging() if (!defaultDialer && !defaultMessaging)
BatteryOptimizations()
} }
BatteryOptimizations() else
BatteryOptimizations()
DarkTheme() DarkTheme()
if (VERSION.SDK_INT >= 31) if (VERSION.SDK_INT >= 31)
DynamicColors() DynamicColors()