Last updated: March 15, 2026

Enable Developer Mode on your Android device, connect it to a computer via USB with ADB tools installed, then run adb shell pm disable-user [package.name] for each bloatware app you want to disable (e.g., adb shell pm disable-user com.samsung.android.app.telephonyui). The app becomes inactive but remains installed, allowing you to re-enable it later with adb shell pm enable [package.name]. This method doesn’t require rooting and immediately stops background data collection and battery drain from disabled apps.

Table of Contents

What is ADB and Why Use It?

ADB is a command-line tool from the Android SDK that creates a communication bridge between your computer and Android device. It allows you to execute shell commands, transfer files, and modify system settings that are normally hidden from users.

When you disable an app via ADB, the application remains installed but enters a disabled state. It cannot run in the background, display notifications, or access system resources. This differs from uninstalling, as you can re-enable disabled apps at any time if needed.

Prerequisites

Before proceeding, gather the following:

Installing Platform Tools

macOS (using Homebrew):

brew install --cask android-platform-tools

Linux (using apt):

sudo apt install adb fastboot

Windows - Download the standalone Platform Tools from the Android Developer website and extract the folder.

Verify the installation by running:

adb version

Step 1 - Enable Developer Options and USB Debugging

Your Android device requires Developer Options enabled and USB Debugging turned on to accept ADB commands.

  1. Open Settings on your Android device
  2. Navigate to About Phone (usually at the bottom)
  3. Tap Build Number seven times to unlock Developer Options
  4. Go back to Settings, then System → Developer Options
  5. Enable USB Debugging

When you connect your device to the computer via USB, a prompt appears requesting authorization. Check the box for “Always allow from this computer” and tap Allow.

Step 2 - Discovering Package Names

Before disabling an app, you need its package name. Android assigns unique identifiers to each app, such as com.android.providers.telephony or com.google.android.gms.

Listing All Installed Apps

adb shell pm list packages

This command displays every package installed on your device, including system apps.

Filtering System Apps

To find system apps specifically, use:

adb shell pm list packages -s

Searching for Specific Apps

Combine with grep to search for specific apps:

adb shell pm list packages | grep google

This returns packages containing “google” in their name, such as com.google.android.gms (Google Play Services) or com.google.android.apps.photos (Google Photos).

Finding Package Names from App List

For a more detailed view showing app names alongside package names:

adb shell pm list packages -3 | while read pkg; do echo "$pkg $(adb shell dumpsys package $pkg | grep 'versionName' | head -1)"; done

Step 3 - Disable System Apps

Once you have the package name, disabling the app requires a single command:

adb shell pm disable-user --user 0 com.example.package

Replace com.example.package with the actual package name you want to disable.

Common Privacy-Related Apps to Consider

Several system apps are known for background data collection:

App Package Description
com.android.providers.calendar Calendar sync and data collection
com.android.providers.contacts Contacts data management
com.google.android.gms Google Play Services (disabling may break functionality)
com.google.android.gsf Google Services Framework
com.samsung.android.app.samsungpay Samsung Pay bloatware

Exercise caution when disabling core system components. Disabling com.google.android.gms may cause crashes or prevent app updates from working.

Step 4 - Disable vs. Uninstalling

ADB offers two approaches for removing apps:

Disable (Recommended for System Apps)

adb shell pm disable-user --user 0 com.example.package

This method:

Uninstall (Requires Root or Workaround)

For complete removal, use:

adb shell pm uninstall -k --user 0 com.example.package

The -k flag keeps the app’s data and cache, while --user 0 targets the primary user profile.

On non-rooted devices, this command only uninstalls updates for system apps, not the app itself. The system reverts to the original version on the next boot.

Step 5 - Re-enabling Disabled Apps

If you accidentally disable an essential app or change your mind, re-enable it:

adb shell pm enable com.example.package

To verify the current state of a package:

adb shell pm dump com.example.package | grep -E "(enabled|disabled)"

Practical Examples

Disable Google Chrome (if you use a different browser)

adb shell pm disable-user --user 0 com.android.chrome

Disable Facebook bloatware (common on Samsung devices)

adb shell pm disable-user --user 0 com.facebook.katana

Disable carrier bloatware (varies by carrier)

adb shell pm disable-user --user 0 com.carrier.name

Disable all Samsung Bixby components

adb shell pm disable-user --user 0 com.samsung.android.bixby.agent
adb shell pm disable-user --user 0 com.samsung.android.bixby.agent.dummy

Step 6 - Safety Precautions

When using ADB to disable apps, follow these guidelines:

Backup before making changes. Although disabling is reversible, create a backup of your important data.

Research before disabling. Some seemingly unnecessary apps are dependencies for other apps. If an app crashes after disabling, re-enable it and research the dependency.

Avoid disabling these core components:

Test incrementally. Disable one app, restart your device, and verify everything works before disabling more apps.

Troubleshooting

Device Not Recognized

If adb devices shows “unauthorized”:

  1. Disconnect and reconnect the USB cable
  2. Check the authorization prompt on your device
  3. Try a different USB port or cable
  4. Revoke USB debugging authorizations in Developer Options and re-authorize

App Still Running After Disabling

Some apps have multiple processes or services. List all components:

adb shell cmd package list features

Or check running processes:

adb shell ps -A | grep package_name

Lost Play Store Access

If disabling Google Play Services causes Play Store issues:

adb shell pm enable com.android.vending
adb shell pm enable com.google.android.gms

Step 7 - Checking Disabled Apps

To see all disabled packages on your device:

adb shell pm list packages -d

This helps track which apps you’ve disabled and plan re-enabling if needed.

Performance and Privacy Benefits

After disabling unnecessary system apps, you may notice:

Getting Started

Begin by listing installed packages and identifying apps you don’t use or trust. Start with non-essential apps like carrier bloatware, manufacturer additions, or pre-installed social media apps. Test your device’s functionality after each change, and maintain a list of disabled packages for reference.

ADB provides a powerful way to reclaim control over your Android device without voiding warranties or rooting. The disabled apps remain on your device but stop consuming resources or collecting data until you choose to re-enable them.

Frequently Asked Questions

How long does it take to use adb to disable android system apps that spy on?

For a straightforward setup, expect 30 minutes to 2 hours depending on your familiarity with the tools involved. Complex configurations with custom requirements may take longer. Having your credentials and environment ready before starting saves significant time.

What are the most common mistakes to avoid?

The most frequent issues are skipping prerequisite steps, using outdated package versions, and not reading error messages carefully. Follow the steps in order, verify each one works before moving on, and check the official documentation if something behaves unexpectedly.

Do I need prior experience to follow this guide?

Basic familiarity with the relevant tools and command line is helpful but not strictly required. Each step is explained with context. If you get stuck, the official documentation for each tool covers fundamentals that may fill in knowledge gaps.

Is this approach secure enough for production?

The patterns shown here follow standard practices, but production deployments need additional hardening. Add rate limiting, input validation, proper secret management, and monitoring before going live. Consider a security review if your application handles sensitive user data.

Where can I get help if I run into issues?

Start with the official documentation for each tool mentioned. Stack Overflow and GitHub Issues are good next steps for specific error messages. Community forums and Discord servers for the relevant tools often have active members who can help with setup problems.

Related Articles