Skip to content
Snippets Groups Projects
Commit 96deb90c authored by akwizgran's avatar akwizgran
Browse files

Merge branch 'notifications' into 'main'

Ask for notification permission when starting up

See merge request !160
parents d61251e4 fdb196ad
No related branches found
No related tags found
1 merge request!160Ask for notification permission when starting up
Pipeline #13991 passed
......@@ -11,6 +11,7 @@
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<application
android:name=".android.MailboxApplication"
......
......@@ -19,11 +19,16 @@
package org.briarproject.mailbox.android.ui
import android.Manifest.permission.POST_NOTIFICATIONS
import android.content.Intent
import android.os.Build.VERSION.SDK_INT
import android.os.Bundle
import androidx.activity.result.contract.ActivityResultContracts.RequestPermission
import androidx.activity.viewModels
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.PermissionChecker.PERMISSION_GRANTED
import androidx.core.content.PermissionChecker.checkSelfPermission
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import dagger.hilt.android.AndroidEntryPoint
......@@ -71,6 +76,9 @@ class MainActivity : AppCompatActivity() {
supportFragmentManager.findFragmentById(R.id.fragmentContainer) as NavHostFragment
navHostFragment.navController
}
private val permissionLauncher = registerForActivityResult(RequestPermission()) {
// if the user doesn't want to allow permissions, so be it
}
private var hadBeenStartedOnSave = false
......@@ -127,6 +135,7 @@ class MainActivity : AppCompatActivity() {
nav.navigate(actionGlobalDoNotKillMeFragment())
}
NotStarted -> {
askForNotificationPermission()
supportActionBar?.hide()
nav.navigate(actionGlobalStartupFragment())
}
......@@ -196,6 +205,12 @@ class MainActivity : AppCompatActivity() {
}
}
private fun askForNotificationPermission() {
if (SDK_INT >= 33 && !isDestroyed && !isFinishing &&
checkSelfPermission(this, POST_NOTIFICATIONS) != PERMISSION_GRANTED
) permissionLauncher.launch(POST_NOTIFICATIONS)
}
private fun showDozeDialog() = AlertDialog.Builder(this)
.setMessage(R.string.warning_dozed)
.setPositiveButton(R.string.fix) { dialog, _ ->
......
......@@ -56,7 +56,7 @@ class StartupFragment : Fragment() {
launchAndRepeatWhileStarted {
viewModel.appState.collect { onAppStateChanged(it) }
}
// FIXME Should this be the job of the fragment? What if I rotate the screen? Start twice?
viewModel.startLifecycle()
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment