From c9ee2c6304f9745cd314784e1d8174adbb2f2f53 Mon Sep 17 00:00:00 2001
From: Josia Pietsch <git@jrpie.de>
Date: Fri, 14 Mar 2025 02:00:26 +0100
Subject: [PATCH 1/2] handle exception when acessing shortcuts

---
 .../de/jrpie/android/launcher/Functions.kt    |  2 +-
 .../launcher/apps/PinnedShortcutInfo.kt       | 23 +++++++++++--------
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/app/src/main/java/de/jrpie/android/launcher/Functions.kt b/app/src/main/java/de/jrpie/android/launcher/Functions.kt
index 81e58d7..7c2abbf 100644
--- a/app/src/main/java/de/jrpie/android/launcher/Functions.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/Functions.kt
@@ -100,7 +100,7 @@ fun removeUnusedShortcuts(context: Context) {
                 },
                 profile
             )
-        } catch (e: IllegalStateException) {
+        } catch (e: Exception) {
             // https://github.com/jrpie/launcher/issues/116
             return null
         }
diff --git a/app/src/main/java/de/jrpie/android/launcher/apps/PinnedShortcutInfo.kt b/app/src/main/java/de/jrpie/android/launcher/apps/PinnedShortcutInfo.kt
index a2815e5..1dc1e1f 100644
--- a/app/src/main/java/de/jrpie/android/launcher/apps/PinnedShortcutInfo.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/apps/PinnedShortcutInfo.kt
@@ -28,15 +28,20 @@ class PinnedShortcutInfo(
     fun getShortcutInfo(context: Context): ShortcutInfo? {
         val launcherApps = context.getSystemService(Service.LAUNCHER_APPS_SERVICE) as LauncherApps
 
-        return launcherApps.getShortcuts(
-            ShortcutQuery().apply {
-                setQueryFlags(ShortcutQuery.FLAG_MATCH_PINNED)
-                setPackage(packageName)
-                setActivity(ComponentName(packageName, activityName))
-                setShortcutIds(listOf(id))
-            },
-            getUserFromId(user, context)
-        )?.firstOrNull()
+        return try {
+            launcherApps.getShortcuts(
+                ShortcutQuery().apply {
+                    setQueryFlags(ShortcutQuery.FLAG_MATCH_PINNED)
+                    setPackage(packageName)
+                    setActivity(ComponentName(packageName, activityName))
+                    setShortcutIds(listOf(id))
+                },
+                getUserFromId(user, context)
+            )?.firstOrNull()
+        } catch(_: Exception) {
+            // can throw SecurityException or IllegalStateException when profile is locked
+            null
+        }
     }
 
     override fun equals(other: Any?): Boolean {

From b156b68d5380cc18582b9784e4868b1cd1bb85ed Mon Sep 17 00:00:00 2001
From: Josia Pietsch <git@jrpie.de>
Date: Fri, 14 Mar 2025 02:39:30 +0100
Subject: [PATCH 2/2] improve German translation

---
 app/src/main/res/values-de/strings.xml | 32 +++++++++++++-------------
 app/src/main/res/values/strings.xml    |  1 -
 2 files changed, 16 insertions(+), 17 deletions(-)

diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index e7c7546..17b840f 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -6,8 +6,8 @@
       -
       -->
     <string name="alert_cant_open_title">App kann nicht geöffnet werden</string>
-    <string name="alert_cant_open_message">Möchtest du die App-Einstellungen anpassen?</string>
-    <string name="toast_cant_open_message">Öffne die Einstellungen um für diese Geste eine Aktion zu wählen</string>
+    <string name="alert_cant_open_message">App-Einstellungen anpassen?</string>
+    <string name="toast_cant_open_message">Einstellungen öffnen um für diese Geste eine Aktion zu wählen</string>
     <!--
       -
       - Settings
@@ -118,7 +118,7 @@
     <string name="settings_list_layout_item_grid">Raster</string>
     <string name="settings_general_choose_home_screen">Launcher wählen</string>
     <string name="settings_meta_cant_select_launcher">App Info</string>
-    <string name="settings_meta_cant_select_launcher_msg">Dein Gerät unterstützt diese Funktion nicht. Stattdessen die App Details bearbeiten?</string>
+    <string name="settings_meta_cant_select_launcher_msg">Das Gerät unterstützt diese Funktion nicht. Stattdessen die App Details bearbeiten?</string>
     <string name="settings_meta_show_tutorial">Zum Tutorial</string>
     <string name="settings_meta_reset">Einstellungen zurücksetzen</string>
     <string name="settings_meta_reset_confirm">Alle Einstellungen gehen verloren. Weitermachen?</string>
@@ -164,23 +164,23 @@
       -->
     <string name="list_other_torch">Taschenlampe umschalten</string>
     <string name="tutorial_title">Tutorial</string>
-    <string name="tutorial_start_text">Nimm dir kurz Zeit und lerne, wie du diesen Launcher verwendest!</string>
+    <string name="tutorial_start_text">Hier eine kurze Erklärung, wie dieser Launcher funktioniert.</string>
     <string name="tutorial_concept_title">Konzept</string>
-    <string name="tutorial_concept_text">µLauncher bietet eine minimalistische, effiziente und ablenkungsfreie digitale Umgebung.\n\nDie App kostet dich nichts, enthält keine Werbung und sammelt keinerlei Daten.</string>
-    <string name="tutorial_concept_text_2">Launcher ist open-source (MIT license) und auf GitHub!\n\nSchau gerne mal dort vorbei!</string>
+    <string name="tutorial_concept_text">µLauncher bietet eine minimalistische, effiziente und ablenkungsfreie digitale Umgebung.\n\nDie App ist freie Software, enthält keine Werbung und sammelt keinerlei Daten.</string>
+    <string name="tutorial_concept_text_2">Der Quellcode ist bei GitHub zu finden.</string>
     <string name="tutorial_usage_title">Benutzung</string>
-    <string name="tutorial_usage_text">Auf deinem Homescreen siehst du nur das Datum und die Uhrzeit. Keine Ablenkung.</string>
-    <string name="tutorial_usage_text_2">Du öffnest Apps indem du über den Bildschirm wischt oder die Lautstärketasten drückst. Gleich wählst du deine Apps.</string>
+    <string name="tutorial_usage_text">Der Homescreen zeigt nur das Datum und die Uhrzeit. Keine Ablenkung.</string>
+    <string name="tutorial_usage_text_2">Häufig verwendete Apps können mittels Gesten, z.B. Wischen oder den Lautstärketasten geöffnet werden. Gleich können die Apps ausgewählt werden.</string>
     <string name="tutorial_setup_title">Einrichtung</string>
-    <string name="tutorial_setup_text">Wir haben dir ein paar Standardapps ausgewählt, du kannst sie hier gerne ändern:</string>
-    <string name="tutorial_setup_text_2">Du kannst deine Auswahl in den Einstellungen später jederzeit ändern.</string>
+    <string name="tutorial_setup_text">Es wurden Standardapps ausgewählt, die Zuordnung kann hier angepasst werden:</string>
+    <string name="tutorial_setup_text_2">Die Auswahl kann in den Einstellungen später jederzeit geändert werden.</string>
     <string name="tutorial_finish_title">Los gehts!</string>
-    <string name="tutorial_finish_text">Du bist bereit loszulegen!\n\nIch hoffe diese App ist nützlich für dich!\n\n- Finn (der Entwickler)\n\tund Josia (der einige Änderungen vorgenommen hat und den Fork μLauncher entwickelt)</string>
+    <string name="tutorial_finish_text">Es kann losgehen!\n\nWir hoffen, dass diese App hilfreich ist!\n\n- Finn (der Entwickler)\n\tund Josia (der einige Änderungen vorgenommen hat und den Fork μLauncher entwickelt)</string>
     <string name="tutorial_finish_button">Starten</string>
     <string name="settings">Einstellungen</string>
     <string name="ic_menu_alt">Mehr Optionen</string>
     <string name="list_other_expand_notifications_panel">Benachrichtigungen</string>
-    <string name="alert_cant_expand_status_bar_panel">Fehler: Diese Funktion wird von deinem Gerät leider nicht unterstützt.</string>
+    <string name="alert_cant_expand_status_bar_panel">Fehler: Die Funktion wird von diesem Gerät leider nicht unterstützt.</string>
     <string name="settings_clock_show_seconds">Sekunden anzeigen</string>
     <string name="undo">Rückgängig</string>
     <string name="list_other_expand_settings_panel">Schnelleinstellungen</string>
@@ -195,7 +195,7 @@
     <string name="alert_requires_android_v">Diese Funktionalität benötigt Android 15 oder neuer.</string>
     <string name="snackbar_app_hidden">Die App wurde versteckt. Sie kann in den Einstellungen wieder sichtbar gemacht werden.</string>
     <string name="toast_device_admin_not_enabled">µLauncher muss Geräteadministrator sein, um den Bildschirm sperren zu dürfen.</string>
-    <string name="device_admin_explanation">Dies ist erforderlich, damit µLauncher den Bildschirm spreen kann.</string>
+    <string name="device_admin_explanation">Dies ist erforderlich, damit µLauncher den Bildschirm sperren kann.</string>
     <string name="device_admin_description">Die Aktion \"Bildschirm sperren\" aktivieren</string>
     <string name="alert_no_torch_found">Es wurde keine geeignete Kamera gefunden.</string>
     <string name="alert_torch_access_exception">Fehler: Kein Zugriff auf die Kamera möglich.</string>
@@ -234,8 +234,8 @@
         Dies erfordert sehr weitgehende Berechtigungen.
         µLauncher wird diese ausschließlich zum Sperren des Bildschirms verwenden.
         <br/>
-        (Irgeneiner gerade heruntergeladenen App sollte man eine solche Behauptung natürlich nicht einfach glauben.
-        Du kannst jedoch den <a href=\"https://github.com/jrpie/Launcher\">Source Code</a> selbst prüfen.)
+        (Irgendeiner gerade heruntergeladenen App sollte man eine solche Behauptung natürlich nicht einfach glauben.
+        Der <a href=\"https://github.com/jrpie/Launcher\">Quelltext</a> dieser App ist jedoch frei verfügbar und kann überprüft werden.)
 
 
         <br/><br/><br/><br/>
@@ -277,4 +277,4 @@
     <string name="dialog_consent_accessibility_consent">Ich willige ein, dass µLauncher eine Bedienungshilfe für Zwecke verwendet, die nicht unter Barrierefreiheit fallen.</string>
     <string name="dialog_consent_accessibility_data_collection">Ich willige ein, dass µLauncher keine Daten sammelt.</string>
     <string name="dialog_consent_accessibility_title">Bedienungshilfe aktivieren</string>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 902e147..3177442 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -192,7 +192,6 @@
       -->
     <string name="settings_general_choose_home_screen">Set μLauncher as home screen</string>
     <string name="settings_meta_cant_select_launcher">App Info</string>
-    <string name="settings_meta_cant_select_launcher_msg">Your device does not support this feature. Manage application details instead?</string>
 
     <string name="settings_meta_show_tutorial">View Launcher Tutorial</string>