feat(notifications): request POST_NOTIFICATIONS permission on app start

This commit is contained in:
Jens Reinemann 2026-05-18 13:54:03 +02:00
parent c39bc5e485
commit 30e86bb7e0

View file

@ -1,14 +1,19 @@
package de.bollwerk.app
import android.Manifest
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import androidx.core.content.ContextCompat
import androidx.lifecycle.lifecycleScope
import dagger.hilt.android.AndroidEntryPoint
import de.bollwerk.app.domain.usecase.EnsureKeyPairUseCase
@ -31,11 +36,16 @@ class MainActivity : ComponentActivity() {
private val _chatNavigationEvents = MutableSharedFlow<ChatDeepLink>(extraBufferCapacity = 1)
val chatNavigationEvents: SharedFlow<ChatDeepLink> = _chatNavigationEvents.asSharedFlow()
private val notificationPermissionLauncher = registerForActivityResult(
ActivityResultContracts.RequestPermission()
) { /* no-op best effort */ }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
lifecycleScope.launch { seedDatabaseUseCase() }
lifecycleScope.launch { ensureKeyPairUseCase.execute() }
enableEdgeToEdge()
requestNotificationPermissionIfNeeded()
handleChatDeepLink(intent)
setContent {
BollwerkTheme {
@ -44,6 +54,16 @@ class MainActivity : ComponentActivity() {
}
}
private fun requestNotificationPermissionIfNeeded() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS)
!= PackageManager.PERMISSION_GRANTED
) {
notificationPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
}
}
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
handleChatDeepLink(intent)