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_SPECIAL_USE" />
<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.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

View File

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