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>