2 of 2 added 440 characters in body

Requires root (at least on 6.0.1). System permissions (uid<=1000) is required but adb runs as userid 2000.

The Package Manager (pm) will do exactly what you want.

In either adb or Terminal Emulator (both require root), run the pm command and you can see its capabilities.

We look at 2 of them:

  • pm list packages
  • pm disable <package>

pm list packages lists all installed packages, this list is unsorted but if you know some easy bash, you can use grep to search for substrings in the package names:

pm packages list | grep google will list all packages with "google" in their name, effectively returning just Google's apps:

Sample output:

package:com.google.android.apps.unveil
package:com.google.android.gsf.login
package:com.google.android.apps.translate
package:com.google.android.backuptransport
package:com.google.android.apps.books
package:com.google.android.apps.giant
package:com.google.android.ears
package:com.google.android.keep
package:com.google.android.talk
package:com.google.android.apps.ads.publisher
package:com.google.android.apps.youtube.music
package:com.google.android.play.games
package:com.google.android.apps.magazines
package:com.google.android.apps.adm
package:com.google.android.inputmethod.latin

pm disable <package name> disables a single package you specified. Disabling the Google Keyboard would then be pm disable com.google.android.inputmethod.latin.

To find out what package name maps to what app try this url: https://play.google.com/store/apps/details?id=<package name>
Replace <package name> with the package name you want to check.

Instead of using pm, you can use Titanium Backup, given that your device is rooted.

In Titanium Backup you can scroll through all your apps, filter that list and select the app you want to disable or in TB's case freeze.
This, however, requires the paid version of Titanium Backup.