commit a021cca297cfb867eabb204d3a25fb7abe762519 parent d37769ed5a453eef1ca20ea54f08775bf1f43c0f Author: MTRNord <MTRNord@users.noreply.github.com> Date: Fri, 1 Aug 2025 20:33:22 +0200 Fix deeplink Diffstat:
5 files changed, 27 insertions(+), 8 deletions(-)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml @@ -32,6 +32,17 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> + <intent-filter> + <action android:name="android.intent.action.VIEW" /> + + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.BROWSABLE" /> + + <data + android:scheme="nordiccalendar" + android:host="eventdetails" + android:pathPattern="/.*" /> + </intent-filter> </activity> <receiver android:name=".notifications.NotificationReceiver" diff --git a/app/src/main/java/space/midnightthoughts/nordiccalendar/MainActivity.kt b/app/src/main/java/space/midnightthoughts/nordiccalendar/MainActivity.kt @@ -164,6 +164,9 @@ class MainActivity : ComponentActivity() { type = NavType.IntType defaultValue = 0 } + ), + deepLinks = listOf( + androidx.navigation.NavDeepLink("nordiccalendar://eventdetails/{eventId}") ) ) { backStackEntry -> EventDetailsView( diff --git a/app/src/main/java/space/midnightthoughts/nordiccalendar/data/CalendarRepository.kt b/app/src/main/java/space/midnightthoughts/nordiccalendar/data/CalendarRepository.kt @@ -150,6 +150,7 @@ class CalendarRepository @Inject constructor(@ApplicationContext context: Contex val intent = Intent(context, NotificationReceiver::class.java).apply { putExtra("eventId", event.eventId) putExtra("eventTitle", event.title) + putExtra("eventDescription", event.description) putExtra("eventTime", event.startTime) putExtra("eventEndTime", event.endTime) putExtra("eventLocation", event.location) @@ -202,6 +203,7 @@ class CalendarRepository @Inject constructor(@ApplicationContext context: Contex val intent = Intent(context, NotificationReceiver::class.java).apply { putExtra("eventId", event.eventId) putExtra("eventTitle", event.title) + putExtra("eventDescription", event.description) putExtra("eventTime", event.startTime) putExtra("eventEndTime", event.endTime) putExtra("eventLocation", event.location) diff --git a/app/src/main/java/space/midnightthoughts/nordiccalendar/notifications/NotificationHelper.kt b/app/src/main/java/space/midnightthoughts/nordiccalendar/notifications/NotificationHelper.kt @@ -13,7 +13,6 @@ import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat import androidx.core.content.ContextCompat import androidx.core.net.toUri -import space.midnightthoughts.nordiccalendar.MainActivity import space.midnightthoughts.nordiccalendar.R object NotificationHelper { @@ -25,13 +24,14 @@ object NotificationHelper { context: Context, eventId: Long, eventTitle: String, + eventDescription: String? = "", eventTime: Long, eventEndTime: Long, eventLocation: String ) { Log.d( "NotificationHelper", - "showEventNotification: eventId=$eventId, eventTitle=$eventTitle, eventTime=$eventTime" + "showEventNotification: eventId=$eventId, eventTitle=$eventTitle, eventTime=$eventTime, eventDescription=$eventDescription, eventEndTime=$eventEndTime, eventLocation=$eventLocation" ) createNotificationChannel(context) // Prüfe Berechtigung für Benachrichtigungen (ab Android 13) @@ -49,9 +49,10 @@ object NotificationHelper { return } } - val intent = Intent(context, MainActivity::class.java).apply { + // Deep Link Intent für EventDetails + val deepLinkUri = "nordiccalendar://eventdetails/$eventId".toUri() + val intent = Intent(Intent.ACTION_VIEW, deepLinkUri).apply { flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK - putExtra("navigateToEventId", eventId) } val pendingIntent = PendingIntent.getActivity( context, @@ -67,13 +68,13 @@ object NotificationHelper { val timeFormat = android.text.format.DateFormat.getTimeFormat(context) val dateFormat = android.text.format.DateFormat.getDateFormat(context) val timeText = if (sameDay) { - "${timeFormat.format(startCal.time)}-${timeFormat.format(endCal.time)}" + "${timeFormat.format(startCal.time)} — ${timeFormat.format(endCal.time)} ${eventDescription}" } else { - "${dateFormat.format(startCal.time)} ${timeFormat.format(startCal.time)} - ${ + "${dateFormat.format(startCal.time)} ${timeFormat.format(startCal.time)} — ${ dateFormat.format( endCal.time ) - } ${timeFormat.format(endCal.time)}" + } ${timeFormat.format(endCal.time)} ${eventDescription}" } val builder = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.outline_calendar_clock_24) diff --git a/app/src/main/java/space/midnightthoughts/nordiccalendar/notifications/NotificationReceiver.kt b/app/src/main/java/space/midnightthoughts/nordiccalendar/notifications/NotificationReceiver.kt @@ -9,17 +9,19 @@ class NotificationReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val eventId = intent.getLongExtra("eventId", -1) val eventTitle = intent.getStringExtra("eventTitle") ?: "Kalenderereignis" + val eventDescription = intent.getStringExtra("eventDescription") val eventTime = intent.getLongExtra("eventTime", 0L) val eventEndTime = intent.getLongExtra("eventEndTime", 0L) val eventLocation = intent.getStringExtra("eventLocation") Log.d( "NotificationReceiver", - "onReceive: eventId=$eventId, eventTitle=$eventTitle, eventTime=$eventTime, eventEndTime=$eventEndTime, eventLocation=$eventLocation" + "onReceive: eventId=$eventId, eventTitle=$eventTitle, eventTime=$eventTime, eventDescription=$eventDescription, eventEndTime=$eventEndTime, eventLocation=$eventLocation" ) NotificationHelper.showEventNotification( context, eventId, eventTitle, + eventDescription, eventTime, eventEndTime, eventLocation ?: ""