From 1e4e2571dd9f4d403465ba909798a0cefa27a41d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ensar=20Saraj=C4=8Di=C4=87?= Date: Thu, 27 Jul 2023 13:59:56 +0200 Subject: [PATCH] Hide uninstall button for system apps --- .../launcher/activities/MainActivity.kt | 2 +- .../simplemobiletools/launcher/extensions/Activity.kt | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/launcher/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/launcher/activities/MainActivity.kt index 398d65b..8d4d7b6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/launcher/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/launcher/activities/MainActivity.kt @@ -584,7 +584,7 @@ class MainActivity : SimpleActivity(), FlingListener { menu.findItem(R.id.hide_icon).isVisible = gridItem.type == ITEM_TYPE_ICON && isOnAllAppsFragment menu.findItem(R.id.resize).isVisible = gridItem.type == ITEM_TYPE_WIDGET menu.findItem(R.id.app_info).isVisible = gridItem.type == ITEM_TYPE_ICON - menu.findItem(R.id.uninstall).isVisible = gridItem.type == ITEM_TYPE_ICON + menu.findItem(R.id.uninstall).isVisible = gridItem.type == ITEM_TYPE_ICON && isUninstallable(gridItem.packageName) menu.findItem(R.id.remove).isVisible = !isOnAllAppsFragment setOnMenuItemClickListener { item -> resetFragmentTouches() diff --git a/app/src/main/kotlin/com/simplemobiletools/launcher/extensions/Activity.kt b/app/src/main/kotlin/com/simplemobiletools/launcher/extensions/Activity.kt index 39ae65a..4cfa6ab 100644 --- a/app/src/main/kotlin/com/simplemobiletools/launcher/extensions/Activity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/launcher/extensions/Activity.kt @@ -3,6 +3,7 @@ package com.simplemobiletools.launcher.extensions import android.app.Activity import android.content.ComponentName import android.content.Intent +import android.content.pm.ApplicationInfo import android.net.Uri import android.provider.Settings import com.simplemobiletools.commons.extensions.showErrorToast @@ -41,6 +42,14 @@ fun Activity.launchAppInfo(packageName: String) { } } +fun Activity.isUninstallable(packageName: String): Boolean { + return try { + (packageManager.getApplicationInfo(packageName, 0).flags and ApplicationInfo.FLAG_SYSTEM) == 0 + } catch (ignored: Exception) { + false + } +} + fun Activity.uninstallApp(packageName: String) { Intent(Intent.ACTION_DELETE).apply { data = Uri.fromParts("package", packageName, null)