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.