• Introducing XDA Computing: Discussion zones for Hardware, Software, and more!    Check it out!

[GUIDE] Disabling stock apps on the G2 (and other NAND locked devices)

Search This thread

paulobrien

Senior Member
Nov 6, 2003
5,279
7,316
Norwich
www.MoDaCo.com
As promised on Twitter (@paulobrien), here's a guide on how to disable your chosen stock junk-ware on your G2.

Normally, you would remove stock apps by deleting the APKs from /system/app, however on the G2 this is not possible due to it's NAND protection. On reboot the apps will just re-appear, so that's no good. You could delete them on every boot via a script, but that's a bit kludgey... there has to be a better way right? RIGHT! :p

Internally, Android manages installed apps via something called 'Package Manager'. Package Manager (PM) references installed apps not by their filename or displayed name but by their internal package name (e.g. com.google.android.apps.maps). Handily, from a command line you can actually call Package Manager with the command 'pm', which gives you access to do some pretty cool stuff - especially if you have root - including disabling packages.

What does disabling a package do? It leaves the file on the system, but prevents the app from running or appearing in the launcher. This is actually quite cool because it means although the app isn't displaying or using any resources, if an update to the app is released, you'll still be notified by the Market. Should you choose to install the update, the package will be re-enabled, after which you can then disable it again if you choose. Neat eh?

So, let me give you a few examples of how you'd disable packages. Firstly you need to have temproot on your device (use VISIONary for this), and open a command shell. You can do this either via 'adb shell' on your PC, or using 'Connectbot' or 'Terminal Emulator' on your device (if you're feeling particularly sadistic). The shell needs to be elevated to root in order to use disable functionality, so type 'su'. You know if you are elevated because the prompt is a '#' instead of a '$'.

In order to disable a package, you first need to know the name of the package. pm has a function to list installed packages... simply type 'pm list packages' (obvious huh!). The output will look something like this:

Code:
# pm list packages
package:com.google.android.location
package:com.tmobile.selfhelp
package:com.android.voicedialer
package:com.android.defcontainer
package:com.android.launcher
package:com.google.android.maps.mytracks
package:com.android.debugtool
package:com.android.contacts
package:com.android.phone
package:com.tmobile.userkeystool
package:com.android.calculator2
package:com.android.htmlviewer
package:com.android.providers.calendar
package:com.android.bluetooth
package:com.android.calendar
package:com.android.browser
package:com.android.music
package:com.google.tts
package:com.android.email.policy
package:com.android.qxdmlog
package:com.android.mms
package:com.android.provision
package:com.htc.copyright
package:com.android.providers.media
package:com.android.certinstaller
package:com.google.android.deskclock
package:com.android.updater
package:com.android.settings
package:com.google.android.carhome
package:com.google.android.street
package:com.google.android.apps.genie.geniewidget
package:com.facebook.katana
package:com.google.android.googlequicksearchbox
package:com.android.providers.drm
package:com.adobe.flashplayer
package:com.android.musicvis
package:com.google.android.apps.unveil
package:com.google.android.apps.listen
package:com.android.wallpaper.livepicker
package:com.htc.web2goshortcut
package:com.android.packageinstaller
package:com.htc.fieldtest
package:com.android.providers.telephony
package:com.android.providers.subscribedfeeds
package:com.svox.pico
package:com.android.email
package:com.google.android.apps.maps
package:com.google.android.latinimetutorial
package:com.android.providers.settings
package:com.android.magicsmoke
package:com.android.providers.downloads
package:com.amazon.mp3
package:com.android.server.vpn
package:com.google.android.apps.googlevoice
package:com.photobucket.android
package:com.android.soundrecorder
package:com.htc.android.htcsetupwizard
package:com.android.vending.updater
package:com.android.inputmethod.latin
package:com.google.android.partnersetup
package:com.android.cardock
package:com.qo.android.oeme
package:com.google.android.voicesearch
package:com.google.android.apps.finance
package:com.google.android.feedback
package:com.google.android.apps.shopper
package:com.google.android.talk
package:com.htc.htcMessageUploader
package:com.cooliris.media
package:com.android.stk
package:com.android.providers.userdictionary
package:com.android.setupwizard
package:android.tts
package:com.google.android.stardroid
package:com.twitter.android
package:com.google.android.syncadapters.calendar
package:android
package:com.android.providers.contacts
package:com.android.protips
package:com.google.android.apps.uploader
package:com.google.android.apps.translate
package:com.android.providers.applications
package:com.android.vending
package:com.google.android.gm
package:com.swype.android.inputmethod
package:com.android.providers.htcCheckin
package:com.android.wallpaper
package:com.android.camera
package:com.google.android.youtube
package:com.google.earth
package:com.google.android.gsf
package:com.google.android.syncadapters.contacts
package:com.google.android.backup
#
Most of the names are pretty self explanatory... you can work out what you want to get rid of.

To disable an app, you use the 'pm disable' command with the package name. I wanted to disable the T-Mo App, MyTracks, Goggles, Listen, Web2Go, Amazon MP3, Google Voice, Photobucket, the Setup icon, Finance, Twitter and Translate, so I did this...

Code:
pm disable com.tmobile.selfhelp
pm disable com.google.android.maps.mytracks
pm disable com.google.android.apps.unveil
pm disable com.google.android.apps.listen
pm disable com.htc.web2goshortcut
pm disable com.amazon.mp3
pm disable com.google.android.apps.googlevoice
pm disable com.photobucket.android
pm disable com.htc.android.htcsetupwizard
pm disable com.google.android.apps.finance
pm disable com.twitter.android
pm disable com.google.android.apps.translate
#

...which returned...

Code:
#Package com.tmobile.selfhelp new state: disabled
# Package com.google.android.maps.mytracks new state: disabled
# Package com.google.android.apps.unveil new state: disabled
# Package com.google.android.apps.listen new state: disabled
# Package com.htc.web2goshortcut new state: disabled
# Package com.amazon.mp3 new state: disabled
# Package com.google.android.apps.googlevoice new state: disabled
# Package com.photobucket.android new state: disabled
# Package com.htc.android.htcsetupwizard new state: disabled
# Package com.google.android.apps.finance new state: disabled
# Package com.twitter.android new state: disabled
...and that's it, job done!

You'll need to restart your Launcher to see the changes (you can do this from Settings -> Applications -> Launcher -> Force Stop) and then you're done! :)

P
 

rhodes588

Senior Member
Aug 17, 2010
115
3
This disables them from starting up and running if phone is rebooted and not running temproot? Or do we have to put these cmd lines in again once rebooted?

Sent from my T-Mobile G2 using XDA App
 

paulobrien

Senior Member
Nov 6, 2003
5,279
7,316
Norwich
www.MoDaCo.com
This disables them from starting up and running if phone is rebooted and not running temproot? Or do we have to put these cmd lines in again once rebooted?

Sent from my T-Mobile G2 using XDA App

This actually makes changes to the packages file on /data, so the NAND protection doesn't matter.

i.e. - you only have to do it once. :)

P
 
  • Like
Reactions: rojocohete

xile6

Senior Member
Dec 2, 2008
1,698
209
Dallas
How to undo?
pm able?
And is this the code tmobile used long ago to hide/show the myfaves app?
Either way great find

Sent from my T-Mobile G2 using XDA App
 

tankmorph

Senior Member
Jun 28, 2007
854
343
St. Petersburg, FL
pm enable (package name) to undo

Also, this doesn't work for com.amazon.mp3. Perhaps it has something to do with it running as a service?

Great work Paul. Everytime I saw that Photobucket app it made me throw up in my mouth a little bit. :p

Sent from my T-Mobile G2 using XDA App
 

paulobrien

Senior Member
Nov 6, 2003
5,279
7,316
Norwich
www.MoDaCo.com
pm enable (package name) to undo

Also, this doesn't work for com.amazon.mp3. Perhaps it has something to do with it running as a service?

Great work Paul. Everytime I saw that Photobucket app it made me throw up in my mouth a little bit. :p

Sent from my T-Mobile G2 using XDA App
It should do... in fact it DOES on my device.

Have you tried doing 'pm enable com.amazon.mp3' then 'pm disable com.amazon.mp3'?

P
 

paulobrien

Senior Member
Nov 6, 2003
5,279
7,316
Norwich
www.MoDaCo.com
After I updated Amazon MP3, I couldn't disable it either!

The fix was to do this...

Code:
#cat /data/system/packages.xml|grep com.amazon.mp3
...which returned this...
Code:
<package name="com.amazon.mp3" codePath="/data/app/com.amazon.mp3-1.apk" flags="1" ts="1287142896000" version="800022" userId="10049" enabled="false" installer="com.google.android.feedback">
<item name="com.amazon.mp3.client.activity.LauncherActivity" />
<item name="com.amazon.mp3.client.receiver.FirstBootReceiver" />
<item name="com.amazon.mp3.service.DownloadService" />
<item name="com.amazon.mp3.client.activity.IntentProxyActivity" />
<item name="com.amazon.mp3.client.receiver.RetryDownloadsReceiver" />
<updated-package name="com.amazon.mp3" codePath="/system/app/amazonmp3.apk" ts="1284540940000" version="800019" userId="10049">
...after which I manually disabled the launcher activity...
Code:
#pm disable com.amazon.mp3/com.amazon.mp3.client.activity.LauncherActivity
...and it's all good! :)

In an ideal world you'd probably disable all the activities (or you could be able to use a wildcard).

P
 

paulobrien

Senior Member
Nov 6, 2003
5,279
7,316
Norwich
www.MoDaCo.com
That would be great. I went ahead and disabled all of the com.amazon.mp3 activities, but Amazon MP3 still shows up under "Running" applications after a reboot. It's gone from the app drawer, though!
Do an 'adb pull /data/system/packages.xml' to your PC, have a look through and double check the 'BOOTCOMPLETE' activity is disabled.

That's obviously the one that is making it run on startup.

P
 

Top Liked Posts

  • There are no posts matching your filters.
  • 8
    As promised on Twitter (@paulobrien), here's a guide on how to disable your chosen stock junk-ware on your G2.

    Normally, you would remove stock apps by deleting the APKs from /system/app, however on the G2 this is not possible due to it's NAND protection. On reboot the apps will just re-appear, so that's no good. You could delete them on every boot via a script, but that's a bit kludgey... there has to be a better way right? RIGHT! :p

    Internally, Android manages installed apps via something called 'Package Manager'. Package Manager (PM) references installed apps not by their filename or displayed name but by their internal package name (e.g. com.google.android.apps.maps). Handily, from a command line you can actually call Package Manager with the command 'pm', which gives you access to do some pretty cool stuff - especially if you have root - including disabling packages.

    What does disabling a package do? It leaves the file on the system, but prevents the app from running or appearing in the launcher. This is actually quite cool because it means although the app isn't displaying or using any resources, if an update to the app is released, you'll still be notified by the Market. Should you choose to install the update, the package will be re-enabled, after which you can then disable it again if you choose. Neat eh?

    So, let me give you a few examples of how you'd disable packages. Firstly you need to have temproot on your device (use VISIONary for this), and open a command shell. You can do this either via 'adb shell' on your PC, or using 'Connectbot' or 'Terminal Emulator' on your device (if you're feeling particularly sadistic). The shell needs to be elevated to root in order to use disable functionality, so type 'su'. You know if you are elevated because the prompt is a '#' instead of a '$'.

    In order to disable a package, you first need to know the name of the package. pm has a function to list installed packages... simply type 'pm list packages' (obvious huh!). The output will look something like this:

    Code:
    # pm list packages
    package:com.google.android.location
    package:com.tmobile.selfhelp
    package:com.android.voicedialer
    package:com.android.defcontainer
    package:com.android.launcher
    package:com.google.android.maps.mytracks
    package:com.android.debugtool
    package:com.android.contacts
    package:com.android.phone
    package:com.tmobile.userkeystool
    package:com.android.calculator2
    package:com.android.htmlviewer
    package:com.android.providers.calendar
    package:com.android.bluetooth
    package:com.android.calendar
    package:com.android.browser
    package:com.android.music
    package:com.google.tts
    package:com.android.email.policy
    package:com.android.qxdmlog
    package:com.android.mms
    package:com.android.provision
    package:com.htc.copyright
    package:com.android.providers.media
    package:com.android.certinstaller
    package:com.google.android.deskclock
    package:com.android.updater
    package:com.android.settings
    package:com.google.android.carhome
    package:com.google.android.street
    package:com.google.android.apps.genie.geniewidget
    package:com.facebook.katana
    package:com.google.android.googlequicksearchbox
    package:com.android.providers.drm
    package:com.adobe.flashplayer
    package:com.android.musicvis
    package:com.google.android.apps.unveil
    package:com.google.android.apps.listen
    package:com.android.wallpaper.livepicker
    package:com.htc.web2goshortcut
    package:com.android.packageinstaller
    package:com.htc.fieldtest
    package:com.android.providers.telephony
    package:com.android.providers.subscribedfeeds
    package:com.svox.pico
    package:com.android.email
    package:com.google.android.apps.maps
    package:com.google.android.latinimetutorial
    package:com.android.providers.settings
    package:com.android.magicsmoke
    package:com.android.providers.downloads
    package:com.amazon.mp3
    package:com.android.server.vpn
    package:com.google.android.apps.googlevoice
    package:com.photobucket.android
    package:com.android.soundrecorder
    package:com.htc.android.htcsetupwizard
    package:com.android.vending.updater
    package:com.android.inputmethod.latin
    package:com.google.android.partnersetup
    package:com.android.cardock
    package:com.qo.android.oeme
    package:com.google.android.voicesearch
    package:com.google.android.apps.finance
    package:com.google.android.feedback
    package:com.google.android.apps.shopper
    package:com.google.android.talk
    package:com.htc.htcMessageUploader
    package:com.cooliris.media
    package:com.android.stk
    package:com.android.providers.userdictionary
    package:com.android.setupwizard
    package:android.tts
    package:com.google.android.stardroid
    package:com.twitter.android
    package:com.google.android.syncadapters.calendar
    package:android
    package:com.android.providers.contacts
    package:com.android.protips
    package:com.google.android.apps.uploader
    package:com.google.android.apps.translate
    package:com.android.providers.applications
    package:com.android.vending
    package:com.google.android.gm
    package:com.swype.android.inputmethod
    package:com.android.providers.htcCheckin
    package:com.android.wallpaper
    package:com.android.camera
    package:com.google.android.youtube
    package:com.google.earth
    package:com.google.android.gsf
    package:com.google.android.syncadapters.contacts
    package:com.google.android.backup
    #
    Most of the names are pretty self explanatory... you can work out what you want to get rid of.

    To disable an app, you use the 'pm disable' command with the package name. I wanted to disable the T-Mo App, MyTracks, Goggles, Listen, Web2Go, Amazon MP3, Google Voice, Photobucket, the Setup icon, Finance, Twitter and Translate, so I did this...

    Code:
    pm disable com.tmobile.selfhelp
    pm disable com.google.android.maps.mytracks
    pm disable com.google.android.apps.unveil
    pm disable com.google.android.apps.listen
    pm disable com.htc.web2goshortcut
    pm disable com.amazon.mp3
    pm disable com.google.android.apps.googlevoice
    pm disable com.photobucket.android
    pm disable com.htc.android.htcsetupwizard
    pm disable com.google.android.apps.finance
    pm disable com.twitter.android
    pm disable com.google.android.apps.translate
    #

    ...which returned...

    Code:
    #Package com.tmobile.selfhelp new state: disabled
    # Package com.google.android.maps.mytracks new state: disabled
    # Package com.google.android.apps.unveil new state: disabled
    # Package com.google.android.apps.listen new state: disabled
    # Package com.htc.web2goshortcut new state: disabled
    # Package com.amazon.mp3 new state: disabled
    # Package com.google.android.apps.googlevoice new state: disabled
    # Package com.photobucket.android new state: disabled
    # Package com.htc.android.htcsetupwizard new state: disabled
    # Package com.google.android.apps.finance new state: disabled
    # Package com.twitter.android new state: disabled
    ...and that's it, job done!

    You'll need to restart your Launcher to see the changes (you can do this from Settings -> Applications -> Launcher -> Force Stop) and then you're done! :)

    P
    1
    This disables them from starting up and running if phone is rebooted and not running temproot? Or do we have to put these cmd lines in again once rebooted?

    Sent from my T-Mobile G2 using XDA App

    This actually makes changes to the packages file on /data, so the NAND protection doesn't matter.

    i.e. - you only have to do it once. :)

    P
    1
    Great tip! Thanks!

    But...dude, you disabled some of my most frequently used apps. Google Voice, Twitter, Goggles, Listen...I use all of those apps every day. But Photobucket, MyAccount, Facebook, all killed. :cool:

    Voice - doesn't work in UK
    Twitter - Seesmic > Official App
    Goggles - Meh
    Listen - Meh

    :D

    P
    1
    lol - i never did get sdk & adb figured out

    connectbot is much easier and quicker - you just need a magnifying glass to read that #2 font size

    you can actually use the volume up/down to increase the font size :)
    1
    Sweet! That would be awesome.
    Thanks brotha!

    Sent from my T-Mobile G2

    Here you go.

    For those who don't know how to use ADB (which you should learn should the phone get fully rooted in the future), or don't like typing out the command to disable a package one by one, here's a script that'll disable a few in one go. You can easily modify it yourself to add/remove packages you want disabled.

    Prerequisites:
    - Install Terminal Emulator from market place.
    - Install Superuser from market place.
    - Rooted

    Instructions:
    1. Copy the file (from the attachment) to the root of your SD card.
    2. Temp root your phone (using Visionary or some alternative)
    3. Open Terminal and type "su" (without the quotes)
    4. This will bring up a Superuser prompt asking for permission. Allow it. You should now see a "#" sign (instead of the previous "$" sign, indicating you have root permissions in Terminal)
    5. Type "cd /sdcard" (without the quotes)
    6. Type "dos2unix disabler.txt" (without the quotes)
    7. Type "sh disabler.txt" (without the quotes)

    My little script will disable the following packages. I'll probably update the script to add more later but this was just a preliminary removal of the ones I saw in the app drawer that I don't use.
    Web2Go, Photobucket, Finance, GenieWidget (news/weather widget), T-Mobile's My Account/Device, Earth, Talk, My Tracks, Quick Search Box, Listen, Unveil (think this is part of Listen but not sure), Latin IME Tutorial (tutorial to use the stock android keyboard, not the swype tutorial), Setup Wizard, Translate, Shopper

    You can easily modify the list as you see fit by adding or removing these lines with the proper package names:
    Code:
    pm_pkg_list=$pm_pkg_list" com.package.name"

    If you need to enable the packages, just uncomment the lines towards the bottom (the text file indicates which ones to uncomment), then run the script again. It will enable ALL the packages listed in the file.

    Here's the code if anyone is interested (or download the attached file):
    Code:
    #!/system/bin/sh
    #Package Disabler v1
    #Created by Stryder5 on XDA (Oct. 21, 2010)
    #This is to disable apps (not remove/uninstall them). Useful for temp roots.
    #Run "dos2unix scriptname.ext" before running the script itself to correctly format it
    #Run "sh scriptname.ext" to actually execute
    
    #List of apps to Enable/Disable
    #You can change this as you see fit.
    pm_pkg_list=$pm_pkg_list" com.photobucket.android"
    pm_pkg_list=$pm_pkg_list" com.google.android.apps.finance"
    pm_pkg_list=$pm_pkg_list" com.google.android.apps.genie.geniewidget"
    pm_pkg_list=$pm_pkg_list" com.tmobile.selfhelp"
    pm_pkg_list=$pm_pkg_list" com.google.earth"
    pm_pkg_list=$pm_pkg_list" com.google.android.talk"
    pm_pkg_list=$pm_pkg_list" com.google.android.maps.mytracks"
    pm_pkg_list=$pm_pkg_list" com.google.android.googlequicksearchbox"
    pm_pkg_list=$pm_pkg_list" com.google.android.apps.listen"
    pm_pkg_list=$pm_pkg_list" com.google.android.apps.unveil"
    pm_pkg_list=$pm_pkg_list" com.google.android.latinimetutorial"
    pm_pkg_list=$pm_pkg_list" com.htc.android.htcsetupwizard"
    pm_pkg_list=$pm_pkg_list" com.google.android.latinimetutorial"
    pm_pkg_list=$pm_pkg_list" com.google.android.apps.translate"
    pm_pkg_list=$pm_pkg_list" com.google.android.apps.shopper"
    
    
    #Start of disabling script
    echo "Disabling Packages in 2 Seconds"
    sleep 2
    for pkg in $pm_pkg_list; do
            echo "Disabling $pkg"
    		pm disable $pkg
    done
    
    echo "Package Disabling Complete"
    
    #Start of enabling script
    #To enable all the disabled packages, remove the pound sign (#) from the beginning of each line below. This will undo all the changes this file has done.
    #echo "Enabling Packages in 2 Seconds"
    #sleep 2
    #for pkg in $pm_pkg_list; do
    #        echo "Enabling $pkg"
    #		pm enable $pkg
    #done
    #
    #echo "Package Enabling Complete"
    
    
    echo "Please reboot the phone or restart Launcher to take effect"
    sleep 2
    echo "Script Completed"