Show permission rationale only then baresip is started the first time

This commit is contained in:
Juha Heinanen
2023-02-21 07:18:32 +02:00
parent 45937ee69e
commit 370541c611
3 changed files with 25 additions and 27 deletions
@@ -662,9 +662,6 @@ class MainActivity : AppCompatActivity() {
BaresipService.callActionUri = URLDecoder.decode(intent.data.toString(), "UTF-8") BaresipService.callActionUri = URLDecoder.decode(intent.data.toString(), "UTF-8")
} }
requestPermissionLauncher =
registerForActivityResult(ActivityResultContracts.RequestPermission()) {}
if (!BaresipService.isServiceRunning) { if (!BaresipService.isServiceRunning) {
if (File(filesDir.absolutePath + "/accounts").exists()) { if (File(filesDir.absolutePath + "/accounts").exists()) {
val accounts = String( val accounts = String(
@@ -684,11 +681,10 @@ class MainActivity : AppCompatActivity() {
else else
arrayOf(RECORD_AUDIO) arrayOf(RECORD_AUDIO)
requestPermissionLauncher =
registerForActivityResult(ActivityResultContracts.RequestPermission()) {}
requestPermissionsLauncher = requestPermissionsLauncher =
registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { isGranted: Map<String, Boolean> -> registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) {}
if (firstRun && isGranted.isEmpty())
askPermissions(permissions)
}
if (Preferences(applicationContext).displayTheme != AppCompatDelegate.getDefaultNightMode()) { if (Preferences(applicationContext).displayTheme != AppCompatDelegate.getDefaultNightMode()) {
AppCompatDelegate.setDefaultNightMode(Preferences(applicationContext).displayTheme) AppCompatDelegate.setDefaultNightMode(Preferences(applicationContext).displayTheme)
@@ -701,10 +697,10 @@ class MainActivity : AppCompatActivity() {
super.onStart() super.onStart()
Log.e(TAG, "Main onStart") Log.e(TAG, "Main onStart")
if (!Utils.checkPermissions(this, permissions)) if (!Utils.checkPermissions(this, permissions))
if (ActivityCompat.shouldShowRequestPermissionRationale(this, RECORD_AUDIO) || if (firstRun) {
((BLUETOOTH_CONNECT in permissions) && firstRun = false
ActivityCompat.shouldShowRequestPermissionRationale(this, BLUETOOTH_CONNECT))) {
askPermissions(permissions) askPermissions(permissions)
} else { } else {
requestPermissionsLauncher.launch(permissions) requestPermissionsLauncher.launch(permissions)
@@ -1319,7 +1315,7 @@ class MainActivity : AppCompatActivity() {
Build.VERSION.SDK_INT >= 29 -> pickupFileFromDownloads("backup") Build.VERSION.SDK_INT >= 29 -> pickupFileFromDownloads("backup")
ContextCompat.checkSelfPermission( ContextCompat.checkSelfPermission(
this, this,
Manifest.permission.WRITE_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE
) == PackageManager.PERMISSION_GRANTED -> { ) == PackageManager.PERMISSION_GRANTED -> {
Log.d(TAG, "Write External Storage permission granted") Log.d(TAG, "Write External Storage permission granted")
val path = Utils.downloadsPath("baresip.bs") val path = Utils.downloadsPath("baresip.bs")
@@ -1328,18 +1324,18 @@ class MainActivity : AppCompatActivity() {
} }
ActivityCompat.shouldShowRequestPermissionRationale( ActivityCompat.shouldShowRequestPermissionRationale(
this, this,
Manifest.permission.WRITE_EXTERNAL_STORAGE) -> { WRITE_EXTERNAL_STORAGE) -> {
layout.showSnackBar( layout.showSnackBar(
binding.root, binding.root,
getString(R.string.no_backup), getString(R.string.no_backup),
Snackbar.LENGTH_INDEFINITE, Snackbar.LENGTH_INDEFINITE,
getString(R.string.ok) getString(R.string.ok)
) { ) {
requestPermissionLauncher.launch(Manifest.permission.WRITE_EXTERNAL_STORAGE) requestPermissionLauncher.launch(WRITE_EXTERNAL_STORAGE)
} }
} }
else -> { else -> {
requestPermissionLauncher.launch(Manifest.permission.WRITE_EXTERNAL_STORAGE) requestPermissionLauncher.launch(WRITE_EXTERNAL_STORAGE)
} }
} }
} }
@@ -1350,7 +1346,7 @@ class MainActivity : AppCompatActivity() {
pickupFileFromDownloads("restore") pickupFileFromDownloads("restore")
ContextCompat.checkSelfPermission( ContextCompat.checkSelfPermission(
this, this,
Manifest.permission.READ_EXTERNAL_STORAGE READ_EXTERNAL_STORAGE
) == PackageManager.PERMISSION_GRANTED -> { ) == PackageManager.PERMISSION_GRANTED -> {
Log.d(TAG, "Read External Storage permission granted") Log.d(TAG, "Read External Storage permission granted")
val path = Utils.downloadsPath("baresip.bs") val path = Utils.downloadsPath("baresip.bs")
@@ -1359,18 +1355,18 @@ class MainActivity : AppCompatActivity() {
} }
ActivityCompat.shouldShowRequestPermissionRationale( ActivityCompat.shouldShowRequestPermissionRationale(
this, this,
Manifest.permission.READ_EXTERNAL_STORAGE) -> { READ_EXTERNAL_STORAGE) -> {
layout.showSnackBar( layout.showSnackBar(
binding.root, binding.root,
getString(R.string.no_restore), getString(R.string.no_restore),
Snackbar.LENGTH_INDEFINITE, Snackbar.LENGTH_INDEFINITE,
getString(R.string.ok) getString(R.string.ok)
) { ) {
requestPermissionLauncher.launch(Manifest.permission.READ_EXTERNAL_STORAGE) requestPermissionLauncher.launch(READ_EXTERNAL_STORAGE)
} }
} }
else -> { else -> {
requestPermissionLauncher.launch(Manifest.permission.READ_EXTERNAL_STORAGE) requestPermissionLauncher.launch(READ_EXTERNAL_STORAGE)
} }
} }
} }
@@ -1605,7 +1601,7 @@ class MainActivity : AppCompatActivity() {
when { when {
ContextCompat.checkSelfPermission( ContextCompat.checkSelfPermission(
this, this,
Manifest.permission.POST_NOTIFICATIONS POST_NOTIFICATIONS
) == PackageManager.PERMISSION_GRANTED -> { ) == PackageManager.PERMISSION_GRANTED -> {
Log.d(TAG, "Notifications permission granted") Log.d(TAG, "Notifications permission granted")
baresipService.action = "Start" baresipService.action = "Start"
@@ -1614,7 +1610,7 @@ class MainActivity : AppCompatActivity() {
moveTaskToBack(true) moveTaskToBack(true)
} }
ActivityCompat.shouldShowRequestPermissionRationale( ActivityCompat.shouldShowRequestPermissionRationale(
this, Manifest.permission.POST_NOTIFICATIONS this, POST_NOTIFICATIONS
) -> { ) -> {
layout.showSnackBar( layout.showSnackBar(
binding.root, binding.root,
@@ -1622,11 +1618,11 @@ class MainActivity : AppCompatActivity() {
Snackbar.LENGTH_INDEFINITE, Snackbar.LENGTH_INDEFINITE,
getString(R.string.ok) getString(R.string.ok)
) { ) {
requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) requestPermissionLauncher.launch(POST_NOTIFICATIONS)
} }
} }
else -> { else -> {
requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) requestPermissionLauncher.launch(POST_NOTIFICATIONS)
} }
} }
} else { } else {
+3 -2
View File
@@ -543,8 +543,9 @@
<string name="permissions_rationale">Tarvittavat luvat</string> <string name="permissions_rationale">Tarvittavat luvat</string>
<string name="audio_permissions">baresip tarvitsee Mikrofoni-luvan puheluita varten ja <string name="audio_permissions">baresip tarvitsee Mikrofoni-luvan puheluita varten ja
Lähellä olevat laitteet -luvan Bluetooth-mikrofonin/kaiuttimen havaitsemista varten, mikäli Lähellä olevat laitteet -luvan Bluetooth-mikrofonin/kaiuttimen havaitsemista varten, mikäli
sellaista halutaan käyttää.</string> sellaista halutaan käyttää, ja Ilmoitukset-luvan ilmoitusten lähettämistä varten.</string>
<string name="audio_and_video_permissions">baresip tarvitsee Mikrofoni-luvan puheluita varten, <string name="audio_and_video_permissions">baresip tarvitsee Mikrofoni-luvan puheluita varten,
Kamera-luvan videopuheluita varten ja Lähellä olevat laitteet -luvan Bluetooth-mikrofonin/kaiuttimen Kamera-luvan videopuheluita varten ja Lähellä olevat laitteet -luvan Bluetooth-mikrofonin/kaiuttimen
havaitsemista varten, mikäli sellaista halutaan käyttää.</string> havaitsemista varten, mikäli sellaista halutaan käyttää, ja Ilmoitukset-luvan ilmoitusten
lähettämistä varten.</string>
</resources> </resources>
+4 -3
View File
@@ -521,10 +521,11 @@
<string name="no_network">No network connection!</string> <string name="no_network">No network connection!</string>
<string name="audio_focus_denied">Audio focus denied!</string> <string name="audio_focus_denied">Audio focus denied!</string>
<string name="permissions_rationale">Permissions rationale</string> <string name="permissions_rationale">Permissions rationale</string>
<string name="audio_permissions">baresip needs \"Microphone\" permission for voice calls and <string name="audio_permissions">baresip needs \"Microphone\" permission for voice calls,
\"Nearby devices\" permission for Bluetooth microphone/speaker detection if you want to use \"Nearby devices\" permission for Bluetooth microphone/speaker detection if you want to use
such a device.</string> such a device, and \"Notifications\" permission for sending notifications.</string>
<string name="audio_and_video_permissions">baresip needs \"Microphone\" permission for voice calls, <string name="audio_and_video_permissions">baresip needs \"Microphone\" permission for voice calls,
\"Camera\" permission for video calls, and \"Nearby devices\" permission for Bluetooth \"Camera\" permission for video calls, and \"Nearby devices\" permission for Bluetooth
microphone/speaker detection if you want to use such a device.</string> microphone/speaker detection if you want to use such a device, and \"Notifications\"
permission for sending notifications.</string>
</resources> </resources>