diff --git a/app/src-tauri/gen/android/app/src/main/AndroidManifest.xml b/app/src-tauri/gen/android/app/src/main/AndroidManifest.xml
index f72a811..7a2dc45 100644
--- a/app/src-tauri/gen/android/app/src/main/AndroidManifest.xml
+++ b/app/src-tauri/gen/android/app/src/main/AndroidManifest.xml
@@ -1,21 +1,18 @@
-
+
+
+
+
+
+
+
-
-
+
+
@@ -24,14 +21,8 @@
-
-
+
+
diff --git a/app/src-tauri/gen/android/app/src/main/java/dev/azom/privacypin/MainActivity.kt b/app/src-tauri/gen/android/app/src/main/java/dev/azom/privacypin/MainActivity.kt
index fdd30cd..ae56a5b 100644
--- a/app/src-tauri/gen/android/app/src/main/java/dev/azom/privacypin/MainActivity.kt
+++ b/app/src-tauri/gen/android/app/src/main/java/dev/azom/privacypin/MainActivity.kt
@@ -1,11 +1,81 @@
package dev.azom.privacypin
+import android.Manifest
+import android.content.pm.PackageManager
+import android.os.Build
import android.os.Bundle
import androidx.activity.enableEdgeToEdge
+import androidx.activity.result.ActivityResultLauncher
+import androidx.activity.result.contract.ActivityResultContracts
+import androidx.core.content.ContextCompat
class MainActivity : TauriActivity() {
+ private lateinit var requestForegroundLocationLauncher: ActivityResultLauncher>
+ private lateinit var requestBackgroundLocationLauncher: ActivityResultLauncher
+ private lateinit var requestNotificationsLauncher: ActivityResultLauncher
+
override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
super.onCreate(savedInstanceState)
+ registerPermissionLaunchers()
+ requestRequiredPermissions()
+ }
+
+ private fun registerPermissionLaunchers() {
+ requestForegroundLocationLauncher =
+ registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) {
+ requestRequiredPermissions()
+ }
+
+ requestBackgroundLocationLauncher =
+ registerForActivityResult(ActivityResultContracts.RequestPermission()) {
+ requestRequiredPermissions()
+ }
+
+ requestNotificationsLauncher =
+ registerForActivityResult(ActivityResultContracts.RequestPermission()) {
+ requestRequiredPermissions()
+ }
+ }
+
+ private fun requestRequiredPermissions() {
+ if (!hasForegroundLocation()) {
+ requestForegroundLocationLauncher.launch(
+ arrayOf(
+ Manifest.permission.ACCESS_COARSE_LOCATION,
+ Manifest.permission.ACCESS_FINE_LOCATION,
+ )
+ )
+ return
+ }
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && !hasBackgroundLocation()) {
+ requestBackgroundLocationLauncher.launch(Manifest.permission.ACCESS_BACKGROUND_LOCATION)
+ return
+ }
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && !hasNotifications()) {
+ requestNotificationsLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
+ }
+ }
+
+ private fun hasForegroundLocation(): Boolean {
+ val coarse = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
+ val fine = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
+ return coarse == PackageManager.PERMISSION_GRANTED || fine == PackageManager.PERMISSION_GRANTED
+ }
+
+ private fun hasBackgroundLocation(): Boolean {
+ return ContextCompat.checkSelfPermission(
+ this,
+ Manifest.permission.ACCESS_BACKGROUND_LOCATION
+ ) == PackageManager.PERMISSION_GRANTED
+ }
+
+ private fun hasNotifications(): Boolean {
+ return ContextCompat.checkSelfPermission(
+ this,
+ Manifest.permission.POST_NOTIFICATIONS
+ ) == PackageManager.PERMISSION_GRANTED
}
}