From 3973f1338f28169f9776ea503180cf41a20f0ab7 Mon Sep 17 00:00:00 2001 From: Vossa Excelencia Date: Mon, 27 Jan 2025 23:36:13 +0000 Subject: [PATCH 1/6] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (215 of 215 strings) Translation: jrpie-Launcher/Launcher Translate-URL: https://toolate.othing.xyz/projects/jrpie-launcher/launcher/pt_BR/ --- app/src/main/res/values-pt-rBR/strings.xml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 1f05552..6a404eb 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -258,4 +258,17 @@ Busca (sem inicialização automática) Licenças de código aberto Licenças de código aberto + Ocultar apps pausados + Ativar o Espaço privado + Essa funcionalidade requer o Android 15.0 ou mais recente. + Espaço privado trancado + Espaço privado liberado + Espaço privado indisponível + O µLauncher precisa ser definido como a tela inicial padrão para poder usar Espaço privado. + Copiar para memória + Não relate vulnerabilidades de segurança publicamente no GitHub, use o seguinte: + Relatar vulnerabilidade de segurança + Criar relatório + Relatar um bug + Obrigado por ajudar a melhorar o µLauncher!\nConsidere adicionar as seguintes informações ao relatório de bug: \ No newline at end of file From f280d3666706eba296e52dfbd1269b3cf2eb1503 Mon Sep 17 00:00:00 2001 From: Josia Pietsch Date: Tue, 28 Jan 2025 02:15:04 +0100 Subject: [PATCH 2/6] add handler for ActivityNotFoundException --- .../java/de/jrpie/android/launcher/Functions.kt | 10 ++++++++-- .../de/jrpie/android/launcher/actions/AppAction.kt | 7 ++++++- .../launcher/ui/list/apps/ListFragmentApps.kt | 13 ++++++++++++- app/src/main/res/values/strings.xml | 2 ++ 4 files changed, 28 insertions(+), 4 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 ebfc070..721caa2 100644 --- a/app/src/main/java/de/jrpie/android/launcher/Functions.kt +++ b/app/src/main/java/de/jrpie/android/launcher/Functions.kt @@ -3,6 +3,7 @@ package de.jrpie.android.launcher import android.app.Activity import android.app.Service import android.app.role.RoleManager +import android.content.ActivityNotFoundException import android.content.ClipData import android.content.ClipboardManager import android.content.Context @@ -16,6 +17,7 @@ import android.os.UserHandle import android.os.UserManager import android.provider.Settings import android.util.Log +import android.widget.Toast import de.jrpie.android.launcher.actions.Action import de.jrpie.android.launcher.actions.Gesture import de.jrpie.android.launcher.apps.AppInfo @@ -83,14 +85,18 @@ fun getPrivateSpaceUser(context: Context): UserHandle? { val userManager = context.getSystemService(Context.USER_SERVICE) as UserManager val launcherApps = context.getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps return userManager.userProfiles.firstOrNull { u -> - launcherApps.getLauncherUserInfo(u)?.userType == UserManager.USER_TYPE_PROFILE_PRIVATE + launcherApps.getLauncherUserInfo(u)?.userType == UserManager.USER_TYPE_PROFILE_PRIVATE } } fun openInBrowser(url: String, context: Context) { val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url)) intent.putExtras(Bundle().apply { putBoolean("new_window", true) }) - context.startActivity(intent) + try { + context.startActivity(intent) + } catch (_: ActivityNotFoundException) { + Toast.makeText(context, R.string.toast_activity_not_found_browser, Toast.LENGTH_LONG).show() + } } fun openTutorial(context: Context) { diff --git a/app/src/main/java/de/jrpie/android/launcher/actions/AppAction.kt b/app/src/main/java/de/jrpie/android/launcher/actions/AppAction.kt index 2bb3780..4b71a90 100644 --- a/app/src/main/java/de/jrpie/android/launcher/actions/AppAction.kt +++ b/app/src/main/java/de/jrpie/android/launcher/actions/AppAction.kt @@ -2,6 +2,7 @@ package de.jrpie.android.launcher.actions import android.app.AlertDialog import android.app.Service +import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent import android.content.pm.LauncherApps @@ -34,7 +35,11 @@ class AppAction(val app: AppInfo) : Action { context.packageManager.getLaunchIntentForPackage(packageName)?.let { it.addCategory(Intent.CATEGORY_LAUNCHER) - context.startActivity(it) + try { + context.startActivity(it) + } catch (_: ActivityNotFoundException) { + return false + } return true } diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/ListFragmentApps.kt b/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/ListFragmentApps.kt index 55f07a5..c52f951 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/ListFragmentApps.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/ListFragmentApps.kt @@ -1,11 +1,13 @@ package de.jrpie.android.launcher.ui.list.apps +import android.content.ActivityNotFoundException import android.content.Intent import android.content.SharedPreferences import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Toast import androidx.fragment.app.Fragment import de.jrpie.android.launcher.R import de.jrpie.android.launcher.apps.AppFilter @@ -91,7 +93,16 @@ class ListFragmentApps : Fragment(), UIObject { if (LauncherPreferences.functionality().searchWeb()) { val i = Intent(Intent.ACTION_WEB_SEARCH).putExtra("query", query) - activity?.startActivity(i) + try { + activity?.startActivity(i) + } catch (_: ActivityNotFoundException) { + Toast.makeText( + requireContext(), + R.string.toast_activity_not_found_search_web, + Toast.LENGTH_LONG + ).show() + } + } else { appsRecyclerAdapter.selectItem(0) } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0910170..a2e0c37 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -328,5 +328,7 @@ Cancel Open Source Licenses Open Source Licenses + No app found to handle search. + Can\'t open URL: no browser found. From d62815be12f39c6dd4def305d99f6f47d6aa3902 Mon Sep 17 00:00:00 2001 From: Josia Pietsch Date: Fri, 31 Jan 2025 01:04:58 +0100 Subject: [PATCH 3/6] improve German translation --- app/src/main/res/values-de/strings.xml | 33 ++++++++++++++++++++++++++ app/src/main/res/values/strings.xml | 6 +++-- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index e815940..e7c7546 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -76,10 +76,12 @@ - --> Aussehen + Farbe Zeit anzeigen Datum anzeigen Lokalisiertes Datumsformat verwenden Datum und Uhrzeit tauschen + Dynamisch Textschatten Hintergrund (Alle Apps und Einstellungen) Einfarbig @@ -103,6 +105,7 @@ Kantenaktionen Kantenbreite Suchergebnis starten + Beim Durchsuchen der Apps Enter drücken um stattdessen im Internet zu suchen Tastatur automatisch öffnen Empfindlichkeit - -# To Reproduce - - - -# Expected behavior - - - -# Screenshots - - -# Smartphone (please complete the following information) - - Device: - - Android Version: - - µLauncher Version: - -# Additional info - - diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml new file mode 100644 index 0000000..fa112ae --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -0,0 +1,50 @@ +name: Bug report +description: Create a report to help improve this app +title: '[bug] ' +labels: bug +body: + - type: markdown + attributes: + value: | + Thank you for helping to improve µLauncher! + - type: textarea + id: bug + attributes: + label: Describe the Bug + description: What happened? + placeholder: A clear and concise description of what the bug is. + render: markdown + validations: + required: true + - type: textarea + id: expected + attributes: + label: Expected Behavior + description: What did you expect to happen instead? + render: markdown + validations: + required: false + - type: textarea + id: reproduce + attributes: + label: To Reproduce + description: What steps are required to reproduce the bug? + render: markdown + placeholder: | + Steps to reproduce the behavior: + 1. Go to '...' + 2. Click on '....' + 3. Scroll down to '....' + 4. See error + validations: + required: false + - type: textarea + id: device + attributes: + label: Your Device + description: | + What device are you using? Adding this information helps to reproduce the bug. + You can copy this from µLauncher > Settings > Meta > Report Bug. + render: markdown + validations: + required: false