From 9bd05e1e8dd06ffa83df3db89a6679a9513cc7b1 Mon Sep 17 00:00:00 2001 From: konstantiniiv Date: Thu, 6 Feb 2025 14:53:28 +0100 Subject: [PATCH] DROID-3330 permissions --- app/src/main/AndroidManifest.xml | 4 +++ .../anytypeio/anytype/ui/main/MainActivity.kt | 33 +++++++++++++++++++ app/src/main/res/values/strings.xml | 1 + 3 files changed, 38 insertions(+) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7e5ab748d5..c35facb7c0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -152,6 +152,10 @@ + + diff --git a/app/src/main/java/com/anytypeio/anytype/ui/main/MainActivity.kt b/app/src/main/java/com/anytypeio/anytype/ui/main/MainActivity.kt index c408e98060..6cce4ba1b6 100644 --- a/app/src/main/java/com/anytypeio/anytype/ui/main/MainActivity.kt +++ b/app/src/main/java/com/anytypeio/anytype/ui/main/MainActivity.kt @@ -8,8 +8,10 @@ import android.graphics.Color import android.os.Build import android.os.Bundle import androidx.activity.enableEdgeToEdge +import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat import androidx.core.os.bundleOf import androidx.fragment.app.FragmentContainerView import androidx.lifecycle.Lifecycle @@ -101,6 +103,7 @@ class MainActivity : AppCompatActivity(R.layout.activity_main), AppNavigation.Pr override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + askNotificationPermission() setupWindowInsets() inject() setupTheme() @@ -640,6 +643,36 @@ class MainActivity : AppCompatActivity(R.layout.activity_main), AppNavigation.Pr componentManager().mainEntryComponent.release() } + // Declare the launcher at the top of your Activity/Fragment: + private val requestPermissionLauncher = registerForActivityResult( + ActivityResultContracts.RequestPermission(), + ) { isGranted: Boolean -> + if (isGranted) { + // FCM SDK (and your app) can post notifications. + } else { + // TODO: Inform user that that your app will not show notifications. + } + } + + private fun askNotificationPermission() { + // This is only necessary for API level >= 33 (TIRAMISU) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) == + PackageManager.PERMISSION_GRANTED + ) { + // FCM SDK (and your app) can post notifications. + } else if (shouldShowRequestPermissionRationale(Manifest.permission.POST_NOTIFICATIONS)) { + // TODO: display an educational UI explaining to the user the features that will be enabled + // by them granting the POST_NOTIFICATION permission. This UI should provide the user + // "OK" and "No thanks" buttons. If the user selects "OK," directly request the permission. + // If the user selects "No thanks," allow the user to continue without notifications. + } else { + // Directly ask for the permission + requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) + } + } + } + companion object { const val AUTO_UPDATE_URL = "https://fra1.digitaloceanspaces.com/anytype-release/latest-android.json" const val SHARE_DIALOG_LABEL = "anytype.dialog.share.label" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c9d907a5dc..2b051ab9ce 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,4 +1,5 @@ 1ba981d1a9afb8af8c81847ef3383a20 b9791dd64a1e9f07a330a4ac9feb1f10 + fcm_default_channel