diff options
| author | Jeroen Akkerman <Jeroen_akkerman1@hotmail.com> | 2026-02-28 01:43:31 +0100 |
|---|---|---|
| committer | Jeroen Akkerman <Jeroen_akkerman1@hotmail.com> | 2026-02-28 01:50:05 +0100 |
| commit | fa5618028dbb28db7feec77c4c880e624a9b88e2 (patch) | |
| tree | 24f7c0be9909c4145a83d5fde658518c65adcc35 /app/src/main | |
| parent | 5b354e65e224e62faaf65498a652703ea23e7e4a (diff) | |
| download | SidePhOnelauncher-fa5618028dbb28db7feec77c4c880e624a9b88e2.tar.gz SidePhOnelauncher-fa5618028dbb28db7feec77c4c880e624a9b88e2.tar.bz2 SidePhOnelauncher-fa5618028dbb28db7feec77c4c880e624a9b88e2.zip | |
Fix a crash caused by android.content.pm.PackageManager$NameNotFoundException
Diffstat (limited to 'app/src/main')
| -rw-r--r-- | app/src/main/java/app/olauncher/helper/Utils.kt | 17 | ||||
| -rw-r--r-- | app/src/main/java/app/olauncher/ui/AppDrawerAdapter.kt | 32 | ||||
| -rw-r--r-- | app/src/main/java/app/olauncher/ui/AppDrawerFragment.kt | 4 |
3 files changed, 35 insertions, 18 deletions
diff --git a/app/src/main/java/app/olauncher/helper/Utils.kt b/app/src/main/java/app/olauncher/helper/Utils.kt index 693d301..372effe 100644 --- a/app/src/main/java/app/olauncher/helper/Utils.kt +++ b/app/src/main/java/app/olauncher/helper/Utils.kt @@ -500,12 +500,21 @@ fun Context.openUrl(url: String) { startActivity(intent) } -fun Context.isSystemApp(packageName: String): Boolean { +fun Context.isSystemApp(packageName: String, user: UserHandle? = null): Boolean { if (packageName.isBlank()) return true return try { - val applicationInfo = packageManager.getApplicationInfo(packageName, 0) - ((applicationInfo.flags and ApplicationInfo.FLAG_SYSTEM != 0) - || (applicationInfo.flags and ApplicationInfo.FLAG_UPDATED_SYSTEM_APP != 0)) + val launcherApps = getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps + val targetUser = user ?: android.os.Process.myUserHandle() + val activityList = launcherApps.getActivityList(packageName, targetUser) + if (activityList.isNotEmpty()) { + val applicationInfo = activityList.first().applicationInfo + ((applicationInfo.flags and ApplicationInfo.FLAG_SYSTEM != 0) + || (applicationInfo.flags and ApplicationInfo.FLAG_UPDATED_SYSTEM_APP != 0)) + } else { + val applicationInfo = packageManager.getApplicationInfo(packageName, 0) + ((applicationInfo.flags and ApplicationInfo.FLAG_SYSTEM != 0) + || (applicationInfo.flags and ApplicationInfo.FLAG_UPDATED_SYSTEM_APP != 0)) + } } catch (e: Exception) { e.printStackTrace() false diff --git a/app/src/main/java/app/olauncher/ui/AppDrawerAdapter.kt b/app/src/main/java/app/olauncher/ui/AppDrawerAdapter.kt index 3bf2373..fd1d58e 100644 --- a/app/src/main/java/app/olauncher/ui/AppDrawerAdapter.kt +++ b/app/src/main/java/app/olauncher/ui/AppDrawerAdapter.kt @@ -1,6 +1,7 @@ package app.olauncher.ui import android.content.Context +import android.content.pm.LauncherApps import android.os.UserHandle import android.text.Editable import android.text.TextWatcher @@ -191,7 +192,7 @@ class AppDrawerAdapter( appTitle.setOnLongClickListener { if (appModel.appPackage.isNotEmpty()) { appDelete.alpha = when ( - appModel is AppModel.PinnedShortcut || !root.context.isSystemApp(appModel.appPackage) + appModel is AppModel.PinnedShortcut || !root.context.isSystemApp(appModel.appPackage, appModel.user) ) { true -> 1.0f false -> 0.5f @@ -215,7 +216,7 @@ class AppDrawerAdapter( // Configure rename behavior appRename.setOnClickListener { if (appModel.appPackage.isNotEmpty()) { - etAppRename.hint = getAppName(etAppRename.context, appModel.appPackage) + etAppRename.hint = getAppName(etAppRename.context, appModel.appPackage, appModel.user) etAppRename.setText(appModel.appLabel) etAppRename.setSelectAllOnFocus(true) renameLayout.visibility = View.VISIBLE @@ -229,7 +230,7 @@ class AppDrawerAdapter( } etAppRename.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { - etAppRename.hint = getAppName(etAppRename.context, appModel.appPackage) + etAppRename.hint = getAppName(etAppRename.context, appModel.appPackage, appModel.user) } override fun beforeTextChanged( @@ -262,12 +263,9 @@ class AppDrawerAdapter( appRenameListener(appModel, renameLabel) renameLayout.visibility = View.GONE } else { - val packageManager = etAppRename.context.packageManager appRenameListener( appModel, - packageManager.getApplicationLabel( - packageManager.getApplicationInfo(appModel.appPackage, 0) - ).toString() + getAppName(etAppRename.context, appModel.appPackage, appModel.user) ) renameLayout.visibility = View.GONE } @@ -285,11 +283,21 @@ class AppDrawerAdapter( appHide.setOnClickListener { appHideListener(appModel, bindingAdapterPosition) } } - private fun getAppName(context: Context, appPackage: String): String { - val packageManager = context.packageManager - return packageManager.getApplicationLabel( - packageManager.getApplicationInfo(appPackage, 0) - ).toString() + private fun getAppName(context: Context, appPackage: String, user: UserHandle): String { + val launcherApps = context.getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps + return try { + val activityList = launcherApps.getActivityList(appPackage, user) + if (activityList.isNotEmpty()) { + activityList.first().label.toString() + } else { + val packageManager = context.packageManager + packageManager.getApplicationLabel( + packageManager.getApplicationInfo(appPackage, 0) + ).toString() + } + } catch (_: Exception) { + "" // As a fallback, display an empty string. + } } } } diff --git a/app/src/main/java/app/olauncher/ui/AppDrawerFragment.kt b/app/src/main/java/app/olauncher/ui/AppDrawerFragment.kt index 6be93f8..77a13b8 100644 --- a/app/src/main/java/app/olauncher/ui/AppDrawerFragment.kt +++ b/app/src/main/java/app/olauncher/ui/AppDrawerFragment.kt @@ -140,7 +140,7 @@ class AppDrawerFragment : Fragment() { is AppModel.App -> { requireContext().apply { - if (isSystemApp(appModel.appPackage)) + if (isSystemApp(appModel.appPackage, appModel.user)) showToast(getString(R.string.system_app_cannot_delete)) else uninstall(appModel.appPackage) @@ -308,4 +308,4 @@ class AppDrawerFragment : Fragment() { super.onDestroyView() _binding = null } -}
\ No newline at end of file +} |
