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:
@ -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" />
|
||||||
|
|||||||
@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user