summaryrefslogtreecommitdiff
path: root/app/src/main
diff options
context:
space:
mode:
authorJeroen Akkerman <Jeroen_akkerman1@hotmail.com>2026-02-28 01:43:31 +0100
committerJeroen Akkerman <Jeroen_akkerman1@hotmail.com>2026-02-28 01:50:05 +0100
commitfa5618028dbb28db7feec77c4c880e624a9b88e2 (patch)
tree24f7c0be9909c4145a83d5fde658518c65adcc35 /app/src/main
parent5b354e65e224e62faaf65498a652703ea23e7e4a (diff)
downloadSidePhOnelauncher-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.kt17
-rw-r--r--app/src/main/java/app/olauncher/ui/AppDrawerAdapter.kt32
-rw-r--r--app/src/main/java/app/olauncher/ui/AppDrawerFragment.kt4
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
+}