diff --git a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt index be7bab59..6891a632 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt @@ -662,9 +662,6 @@ class MainActivity : AppCompatActivity() { BaresipService.callActionUri = URLDecoder.decode(intent.data.toString(), "UTF-8") } - requestPermissionLauncher = - registerForActivityResult(ActivityResultContracts.RequestPermission()) {} - if (!BaresipService.isServiceRunning) { if (File(filesDir.absolutePath + "/accounts").exists()) { val accounts = String( @@ -684,11 +681,10 @@ class MainActivity : AppCompatActivity() { else arrayOf(RECORD_AUDIO) + requestPermissionLauncher = + registerForActivityResult(ActivityResultContracts.RequestPermission()) {} requestPermissionsLauncher = - registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { isGranted: Map -> - if (firstRun && isGranted.isEmpty()) - askPermissions(permissions) - } + registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) {} if (Preferences(applicationContext).displayTheme != AppCompatDelegate.getDefaultNightMode()) { AppCompatDelegate.setDefaultNightMode(Preferences(applicationContext).displayTheme) @@ -701,10 +697,10 @@ class MainActivity : AppCompatActivity() { super.onStart() Log.e(TAG, "Main onStart") + if (!Utils.checkPermissions(this, permissions)) - if (ActivityCompat.shouldShowRequestPermissionRationale(this, RECORD_AUDIO) || - ((BLUETOOTH_CONNECT in permissions) && - ActivityCompat.shouldShowRequestPermissionRationale(this, BLUETOOTH_CONNECT))) { + if (firstRun) { + firstRun = false askPermissions(permissions) } else { requestPermissionsLauncher.launch(permissions) @@ -1319,7 +1315,7 @@ class MainActivity : AppCompatActivity() { Build.VERSION.SDK_INT >= 29 -> pickupFileFromDownloads("backup") ContextCompat.checkSelfPermission( this, - Manifest.permission.WRITE_EXTERNAL_STORAGE + WRITE_EXTERNAL_STORAGE ) == PackageManager.PERMISSION_GRANTED -> { Log.d(TAG, "Write External Storage permission granted") val path = Utils.downloadsPath("baresip.bs") @@ -1328,18 +1324,18 @@ class MainActivity : AppCompatActivity() { } ActivityCompat.shouldShowRequestPermissionRationale( this, - Manifest.permission.WRITE_EXTERNAL_STORAGE) -> { + WRITE_EXTERNAL_STORAGE) -> { layout.showSnackBar( binding.root, getString(R.string.no_backup), Snackbar.LENGTH_INDEFINITE, getString(R.string.ok) ) { - requestPermissionLauncher.launch(Manifest.permission.WRITE_EXTERNAL_STORAGE) + requestPermissionLauncher.launch(WRITE_EXTERNAL_STORAGE) } } else -> { - requestPermissionLauncher.launch(Manifest.permission.WRITE_EXTERNAL_STORAGE) + requestPermissionLauncher.launch(WRITE_EXTERNAL_STORAGE) } } } @@ -1350,7 +1346,7 @@ class MainActivity : AppCompatActivity() { pickupFileFromDownloads("restore") ContextCompat.checkSelfPermission( this, - Manifest.permission.READ_EXTERNAL_STORAGE + READ_EXTERNAL_STORAGE ) == PackageManager.PERMISSION_GRANTED -> { Log.d(TAG, "Read External Storage permission granted") val path = Utils.downloadsPath("baresip.bs") @@ -1359,18 +1355,18 @@ class MainActivity : AppCompatActivity() { } ActivityCompat.shouldShowRequestPermissionRationale( this, - Manifest.permission.READ_EXTERNAL_STORAGE) -> { + READ_EXTERNAL_STORAGE) -> { layout.showSnackBar( binding.root, getString(R.string.no_restore), Snackbar.LENGTH_INDEFINITE, getString(R.string.ok) ) { - requestPermissionLauncher.launch(Manifest.permission.READ_EXTERNAL_STORAGE) + requestPermissionLauncher.launch(READ_EXTERNAL_STORAGE) } } else -> { - requestPermissionLauncher.launch(Manifest.permission.READ_EXTERNAL_STORAGE) + requestPermissionLauncher.launch(READ_EXTERNAL_STORAGE) } } } @@ -1605,7 +1601,7 @@ class MainActivity : AppCompatActivity() { when { ContextCompat.checkSelfPermission( this, - Manifest.permission.POST_NOTIFICATIONS + POST_NOTIFICATIONS ) == PackageManager.PERMISSION_GRANTED -> { Log.d(TAG, "Notifications permission granted") baresipService.action = "Start" @@ -1614,7 +1610,7 @@ class MainActivity : AppCompatActivity() { moveTaskToBack(true) } ActivityCompat.shouldShowRequestPermissionRationale( - this, Manifest.permission.POST_NOTIFICATIONS + this, POST_NOTIFICATIONS ) -> { layout.showSnackBar( binding.root, @@ -1622,11 +1618,11 @@ class MainActivity : AppCompatActivity() { Snackbar.LENGTH_INDEFINITE, getString(R.string.ok) ) { - requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) + requestPermissionLauncher.launch(POST_NOTIFICATIONS) } } else -> { - requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) + requestPermissionLauncher.launch(POST_NOTIFICATIONS) } } } else { diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 8aa43fbb..61efa09b 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -543,8 +543,9 @@ Tarvittavat luvat baresip tarvitsee Mikrofoni-luvan puheluita varten ja Lähellä olevat laitteet -luvan Bluetooth-mikrofonin/kaiuttimen havaitsemista varten, mikäli - sellaista halutaan käyttää. + sellaista halutaan käyttää, ja Ilmoitukset-luvan ilmoitusten lähettämistä varten. baresip tarvitsee Mikrofoni-luvan puheluita varten, Kamera-luvan videopuheluita varten ja Lähellä olevat laitteet -luvan Bluetooth-mikrofonin/kaiuttimen - havaitsemista varten, mikäli sellaista halutaan käyttää. + havaitsemista varten, mikäli sellaista halutaan käyttää, ja Ilmoitukset-luvan ilmoitusten + lähettämistä varten. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9bd3b27b..cb2eddc7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -521,10 +521,11 @@ No network connection! Audio focus denied! Permissions rationale - baresip needs \"Microphone\" permission for voice calls and + baresip needs \"Microphone\" permission for voice calls, \"Nearby devices\" permission for Bluetooth microphone/speaker detection if you want to use - such a device. + such a device, and \"Notifications\" permission for sending notifications. baresip needs \"Microphone\" permission for voice calls, \"Camera\" permission for video calls, and \"Nearby devices\" permission for Bluetooth - microphone/speaker detection if you want to use such a device. + microphone/speaker detection if you want to use such a device, and \"Notifications\" + permission for sending notifications.