Start Automatically setting now starts the app instead of notifying
This commit is contained in:
@ -1,23 +1,15 @@
|
||||
package com.tutpro.baresip
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.NotificationChannel
|
||||
import android.app.NotificationManager
|
||||
import android.app.PendingIntent
|
||||
import android.app.Service
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import androidx.core.app.NotificationCompat
|
||||
|
||||
import java.nio.charset.StandardCharsets
|
||||
|
||||
class BootCompletedReceiver : BroadcastReceiver() {
|
||||
|
||||
private val START_NOTIFICATION_IN = 105
|
||||
|
||||
@SuppressLint("UnspecifiedImmutableFlag")
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
|
||||
@ -28,34 +20,14 @@ class BootCompletedReceiver : BroadcastReceiver() {
|
||||
val asCv = Utils.getNameValue(config,"auto_start")
|
||||
|
||||
if ((asCv.size > 0) && (asCv[0] == "yes")) {
|
||||
|
||||
Log.i(TAG, "Start baresip upon boot completed")
|
||||
|
||||
val i = Intent(context, MainActivity::class.java).apply {
|
||||
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
val b = Bundle()
|
||||
b.putBoolean("onStartup", true)
|
||||
putExtras(b)
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT < 29) {
|
||||
context.startActivity(i)
|
||||
} else {
|
||||
val nm = context.getSystemService(Service.NOTIFICATION_SERVICE) as NotificationManager
|
||||
val channel = NotificationChannel("default", "default",
|
||||
NotificationManager.IMPORTANCE_DEFAULT)
|
||||
nm.createNotificationChannel(channel)
|
||||
val pi = PendingIntent.getActivity(context, 0, i,
|
||||
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_ONE_SHOT)
|
||||
with(NotificationCompat.Builder(context, "default")) {
|
||||
setSmallIcon(R.drawable.ic_stat)
|
||||
setContentTitle(context.getString(R.string.app_name))
|
||||
setContentText(context.getString(R.string.tap_to_start))
|
||||
setContentIntent(pi)
|
||||
setAutoCancel(true)
|
||||
nm.notify(START_NOTIFICATION_IN, build())
|
||||
}
|
||||
}
|
||||
context.startActivity(i)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -10,11 +10,18 @@ import android.content.pm.PackageManager
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.os.PowerManager
|
||||
import android.provider.Settings
|
||||
import android.text.method.LinkMovementMethod
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.widget.*
|
||||
import android.widget.AdapterView
|
||||
import android.widget.ArrayAdapter
|
||||
import android.widget.CheckBox
|
||||
import android.widget.EditText
|
||||
import android.widget.ScrollView
|
||||
import android.widget.Spinner
|
||||
import android.widget.TextView
|
||||
import androidx.activity.OnBackPressedCallback
|
||||
import androidx.activity.result.ActivityResultLauncher
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
@ -29,7 +36,7 @@ import com.tutpro.baresip.Utils.showSnackBar
|
||||
import com.tutpro.baresip.databinding.ActivityConfigBinding
|
||||
import java.io.File
|
||||
import java.io.FileInputStream
|
||||
import java.util.*
|
||||
import java.util.Locale
|
||||
|
||||
class ConfigActivity : AppCompatActivity() {
|
||||
|
||||
@ -59,6 +66,7 @@ class ConfigActivity : AppCompatActivity() {
|
||||
|
||||
private var oldAutoStart = ""
|
||||
private var oldListenAddr = ""
|
||||
private var managingOverlayPermission = false
|
||||
private var oldDnsServers = ""
|
||||
private var oldCertificateFile = false
|
||||
private var oldVerifyServer = false
|
||||
@ -95,6 +103,41 @@ class ConfigActivity : AppCompatActivity() {
|
||||
autoStart = binding.AutoStart
|
||||
oldAutoStart = Config.variable("auto_start")
|
||||
autoStart.isChecked = oldAutoStart == "yes"
|
||||
if (autoStart.isChecked && !isAppearOnTopPermissionGranted(this)) {
|
||||
Config.replaceVariable("auto_start", "no")
|
||||
oldAutoStart = "no"
|
||||
save = true
|
||||
autoStart.isChecked = false
|
||||
}
|
||||
autoStart.setOnCheckedChangeListener { _, isChecked ->
|
||||
if (isChecked) {
|
||||
if (!isAppearOnTopPermissionGranted(this)) {
|
||||
with(
|
||||
MaterialAlertDialogBuilder(
|
||||
this@ConfigActivity,
|
||||
R.style.AlertDialogTheme
|
||||
)
|
||||
) {
|
||||
setTitle(getText(R.string.notice))
|
||||
setMessage(getText(R.string.appear_on_top_permission))
|
||||
setPositiveButton(getText(R.string.ok)) { dialog, _ ->
|
||||
dialog.dismiss()
|
||||
managingOverlayPermission = true
|
||||
val intent = Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION)
|
||||
startActivity(intent)
|
||||
}
|
||||
setNegativeButton(getText(R.string.cancel)) { dialog, _ ->
|
||||
dialog.dismiss()
|
||||
}
|
||||
val dialog = this.create()
|
||||
dialog.setCancelable(false)
|
||||
dialog.setCanceledOnTouchOutside(false)
|
||||
dialog.show()
|
||||
}
|
||||
autoStart.isChecked = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val pm = getSystemService(Context.POWER_SERVICE) as PowerManager
|
||||
val androidSettingsRequest = registerForActivityResult(
|
||||
@ -436,6 +479,14 @@ class ConfigActivity : AppCompatActivity() {
|
||||
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
if (managingOverlayPermission) {
|
||||
managingOverlayPermission = false
|
||||
autoStart.isChecked = isAppearOnTopPermissionGranted(this)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
requestPermissionLauncher =
|
||||
@ -636,6 +687,10 @@ class ConfigActivity : AppCompatActivity() {
|
||||
|
||||
}
|
||||
|
||||
private fun isAppearOnTopPermissionGranted(ctx: Context): Boolean {
|
||||
return Settings.canDrawOverlays(ctx)
|
||||
}
|
||||
|
||||
private fun done() {
|
||||
|
||||
if (save)
|
||||
|
||||
@ -306,6 +306,8 @@
|
||||
<string name="start_automatically">Käynnistä automaattisesti</string>
|
||||
<string name="start_automatically_help">Jos merkitty, baresip
|
||||
käynnistyy automaattisesti, kun laite käynnistyy.</string>
|
||||
<string name="appear_on_top_permission">Automaattinen käynnistys vaatii "Näytä päällimmäisenä"
|
||||
käyttöoikeuden.</string>
|
||||
<string name="battery_optimizations">Akun käytön optimointi</string>
|
||||
<string name="battery_optimizations_help">Ota akun käytön optimointi pois päältä (suositeltu),
|
||||
jos haluat vähentää todennäköisyyttä, että Android rajoittaa baresip-sovelluksen toimintaa
|
||||
|
||||
@ -288,6 +288,7 @@
|
||||
<string name="configuration">Settings</string>
|
||||
<string name="start_automatically">Start Automatically</string>
|
||||
<string name="start_automatically_help">If checked, baresip starts automatically after device (re)start.</string>
|
||||
<string name="appear_on_top_permission">Automatic start needs Appear on Top permission.</string>
|
||||
<string name="battery_optimizations">Battery Optimizations</string>
|
||||
<string name="battery_optimizations_help">Disable battery optimizations (recommended) if you want
|
||||
to reduce likelihood that Android restricts baresip\'s access to network or enters baresip
|
||||
|
||||
Reference in New Issue
Block a user