diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ab5ba11b..3088e68b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -19,6 +19,7 @@ + diff --git a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt index 78a1b1e1..ebacb4a7 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt @@ -630,7 +630,10 @@ class MainActivity : AppCompatActivity() { BaresipService.callActionUri = URLDecoder.decode(intent.data.toString(), "UTF-8") } - if (!BaresipService.isServiceRunning) + requestPermissionLauncher = + registerForActivityResult(ActivityResultContracts.RequestPermission()) {} + + if (!BaresipService.isServiceRunning) { if (File(filesDir.absolutePath + "/accounts").exists()) { val accounts = String( Utils.getFileContents(filesDir.absolutePath + "/accounts")!!, @@ -642,15 +645,13 @@ class MainActivity : AppCompatActivity() { firstRun = true startBaresip() } + } if (Preferences(applicationContext).displayTheme != AppCompatDelegate.getDefaultNightMode()) { AppCompatDelegate.setDefaultNightMode(Preferences(applicationContext).displayTheme) delegate.applyDayNight() } - requestPermissionLauncher = - registerForActivityResult(ActivityResultContracts.RequestPermission()) {} - } // OnCreate override fun onStart() { @@ -1180,7 +1181,6 @@ class MainActivity : AppCompatActivity() { } handleNextEvent() - } private fun reStart() { @@ -1560,10 +1560,40 @@ class MainActivity : AppCompatActivity() { } private fun startBaresip() { - baresipService.action = "Start" - startService(baresipService) - if (atStartup) - moveTaskToBack(true) + if (Build.VERSION.SDK_INT >= 33) { + when { + ContextCompat.checkSelfPermission( + this, + Manifest.permission.POST_NOTIFICATIONS + ) == PackageManager.PERMISSION_GRANTED -> { + Log.d(TAG, "Notifications permission granted") + baresipService.action = "Start" + startService(baresipService) + if (atStartup) + moveTaskToBack(true) + } + ActivityCompat.shouldShowRequestPermissionRationale( + this, Manifest.permission.POST_NOTIFICATIONS + ) -> { + layout.showSnackBar( + binding.root, + getString(R.string.no_notifications), + Snackbar.LENGTH_INDEFINITE, + getString(R.string.ok) + ) { + requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) + } + } + else -> { + requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) + } + } + } else { + baresipService.action = "Start" + startService(baresipService) + if (atStartup) + moveTaskToBack(true) + } } private fun backup(password: String) { diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 02c6ff41..cdb2ae79 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -534,12 +534,11 @@ Android versioon 9 saakka tarkista myös Asetukset → Sovellukset → baresip → Käyttöluvat → Tallennustila ja että tiedosto \'%1$s\' on Download-kansiossa. - Et voi soittaa puheluita tai vastata niihin ilman Mikrofoni-käyttöoikeutta. - Salli Kamera-sovelluslupa jotta voit soittaa videopuheluita ja vastata niihin. - Et voi tallentaa sovelluksen tietoja ilman - Tallennustila-käyttöoikeutta. - Et voi palauttaa sovelluksen tietoja ilman - Tallennustila-käyttöoikeutta. + Et voi käyttää tätä sovellusta ilman Ilmoitukset-lupaa. + Et voi soittaa puheluita tai vastata niihin ilman Mikrofoni-lupaa. + Salli Kamera-lupa jotta voit soittaa videopuheluita ja vastata niihin. + Et voi tallentaa sovelluksen tietoja ilman Tallennustila-lupaa. + Et voi palauttaa sovelluksen tietoja ilman Tallennustila-lupaa. Sinulla ei ole yhtään tuettua video-kameraa. Näytä salasana Ei verkkoyhteyttä! diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ca2242da..69b29b31 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -506,6 +506,8 @@ also check Apps → baresip → Permissions → Storage and that file \'%1$s\' exists in Download folder. + You are not able to use this application without \"Notifications\" + permission. You are not able to make or answer calls without \"Microphone\" permission. Grant \"Camera\" permission to make or answer video calls.