Disabling factory installed Applications on an Android Phone without root

If you ever have used an Android phone I am pretty sure that you all experienced the following: Android Phones usually come with dozens of pre-installed applications. If you happen to receive your phone from a carrier it might even come with more carrier – centric applications which you might or might not like. The Android application managers offers the ability to disable most of these apps similar to how you uninstall applications acquired through the Google Play Store.

Disable Built - in Application
Disable Built – in Application

Short Remark: If the application came factory pre-installed and meanwhile has received updates through the Play Store the “Disable” button will probably be labelled with: “Uninstall Updates”

In contrast, the manufacturer may turn off the “Disable” functionality for certain system applications. As you can see on the next screenshot, the application cannot be disabled. The button is greyed out.

Application Management - Disabling Application not allowed
Application Management – Disabling Application not allowed

Fortunately, a way still exist to disable those apps without rooting your mobile phone using Android’s Debug Bridge.

  • Connect your device via USB and fire up a Terminal
  • Check that your device is connected using adb devices
  • Connect to a shell on your mobile phone using adb shell
  • pm list packages will show the package names of all installed applications on the phone (including built-in applications)

shell@C6903:/ $ pm list packages
package:com.google.android.ears
package:com.sonyericsson.cameraextension.permission
package:ch.admin.meteoswiss
package:com.android.defcontainer
package:com.sonymobile.cameracommon
package:bbc.mobile.news.ww
package:com.audible.application
package:com.sonyericsson.orangetheme
package:com.android.phone
package:com.sonyericsson.initialbootsetup
package:com.mobisystems.fileman
package:com.sonyericsson.unsupportedheadsetnotifier
package:com.sonyericsson.providers.protectedmedia

To disable any app use the block command. Even those with Disable turned off can be disabled.
For example to disable Sony’s What’s New Application:

pm block com.sonymobile.advancedwidget.entrance

To turn off the small app widgets found in the recent app launcher execute the following commands:

shell@C6903:/ $ pm block com.sony.smallapp.launcher
Package com.sony.smallapp.launcher new blocked state: true
shell@C6903:/ $ pm block com.sony.smallapp.app.widget
Package com.sony.smallapp.app.widget new blocked state: true

Reboot and you’re done.

Android Application Debugging over WiFi

When developing android applications I sometimes run out of usb ports on my notebook and have no free ports left to connect my nexus device. Luckily a friend of mine showed me a neat little trick to run ADB (Android Debug Bridge) using TCP/IP over Wifi. This means that you don’t have to tether your Android device to your computer when you are developing.

This allows to quickly charge up a device using wall-mounted usb charger while still being able to develop your program and push new builds to the device as long as it is connected to the same wireless network. I guess in a project where multiple developers are working on the same project at the same time, multiple computers can connect to the same android device via tcp/ip and push out new builds to the device simultaneously. (Only prerequisite being that all computers must use the same debug key to code sign the build).

Follow these steps to connect your android device using ADB over TCP/IP:

Connect your Android device to your computer and make sure that you have USB Debugging enabled (Settings –> Developer options –> USB debugging)

Fire up your favourite Terminal/Console application. In case you didn’t add the SDK folder to your PATH system variable. Navigate to your directory.
Make sure ADB can see your device via usb:

$ adb devices
List of devices attached
02ccbd8c093efac2 device

Restart ADB in TCP/IP mode with the following command: (5555 represents the port used for the adb onnection – can be changed to your liking)

$ adb tcpip 5555
restarting in TCP mode port: 5555

ADB will promptly respond that it has restarted ADB in TCP/IP mode. Now you need to connect adb to your phone using the phone’s ip address (Settings –> About phone –> Status –> IP address)

$ adb connect 10.1.1.161 #replace 10.1.1.161 with your phone's ip address
connected to 10.1.1.161:5555

again listing all your connected devices with

$ adb devices
List of devices attached
10.1.1.161:5555 device

should now list your phone’s ip address and you can install and push new builds directly from eclipse to your phone via WiFi

Logcat Window in Eclipse
Logcat Window in Eclipse – Pushing a build to a phone

Android 4.4 Includes Native Screen Recording

Android has had native support for user-taken screenshots since Version 4.0. A few OEMs like Samsung offered this feature even before that. However up until now, getting a reliable video recording of your device’s screen has been quite difficult. It generally involved some kind of root solution that doesn’t work for all hardware or devices. In KitKat, Google is finally offering an official solution to directly record a video from the screen that doesn’t require root and should work across all devices.

The following blog post about the new features and changes of Android KitKat briefly talks about a screen recording utility but fails to provide any details about where to find the utility. So far I haven’t found an app on the device itself that allows to start the screen recording. However you can initiate a screen recording through adb with the following command:

adb shell screenrecord /sdcard/nexus5_screenrecord_20131102.mp4

Afterwards you can use the “pull” command to download the video from your phone to your computer:

chriss-mbp:Downloads chris$ adb pull /sdcard/nexus5_screenrecord_20131102.mp4
4689 KB/s (18875465 bytes in 3.930s)

The video quality is truely remarkable. I created a short recording to demonstrate the screen recording feature.

Android full phone backup without an unlocked boot loader or root

When it comes to computers, smartphones or just anything electronics in general it’s always a good idea to have a backup. The Apple iTunes ecosystems allows a user to easily create a backup from your phone that includes your data, settings, literally everything with just a touch of a button. So even if you lose or break your device you can simply buy a new one and restore your backup. It’s as if it never happened. 

However things on Android have never been that easy. Users with a rooted device could always use Titanium Backup to backup all applications and settings but I haven’t heard of an application that allows this on non-rooted devices. I reckon that technically it’s not possible without root access as applications don’t have the permissions to access the /system/app/ folder where all the installed applications reside. 


Luckily, there seems to be a way now to backup your Android phone with the help of ADB – the android debug bridge from the android SDK. Keep in mind that your phone needs to have at least Android 4.0 running. As this hasn’t been publicised explicitly as a new feature of ICS I would still treat is experimental. From my personal experience I can tell that it works rather well, otherwise I wouldn’t be writing about it.


Before we start, I am going to assume that you’ve already installed the Android SDK and updated the SDK Platform Tools to the latest version using the SDK Manager.

To Backup your phone: 

  1. Connect your phone via usb and make sure that you have enabled usb debugging in the developer options. Open up a command / terminal prompt
    1. Optionally you can type the command “adb devices”
      1:  chriss-mbp:~ chris$ adb devices  
      2: List of devices attached
      3: 047c58661c9162b9 device
      4:
      5: chriss-mbp:~ chris$

  2. The command ‘adb backup’ allows you to create a full backup of your android device

The command syntax:     [ command ] : optional argument

 adb backup [ -f ] [ -apk | -noapk ] [ -shared | -noshared ] [ -all ] [ -system | -nosystem ] [  ]  


The following basic command will use the defaults to backup only application and device data without the APKs itself to the file ‘backup.ab’ in your current working directory

You might need to specify the backup file in case the following error occurs:
“adb: cannot open file ./backup.ab”

 adb backup -all -f C:\backup.ab  

Explanation of parameters:

 -f   

specifies where the backup file will be saved.

 -apk | -noapk  

flag sets whether or not the APK’s of an application should be included in the backup or simply the application’s respective data. The default is -noapk. I highly recommend -apk just in case the apk is not available anymore from the market. Saves hunting down the apk on some dubious 3rd party file hoster.

 -shared | -noshared  

flag sets whether the device’s shared storage (included memory of the device), usually mounted at /sdcard/ is backed up. The default is -noshared. I highly recommend this for nexus devices as they have no external micro-sd card slot and all the pictures/music are saved on the internal storage. Still use a PC to backup your pictures/music manually or use something like Dropbox or G+ Auto-Upload. Better safe than sorry.

 -all 

flag set whether to backup all the applications or just backup the app specified by the argument

 -system|-nosystem

flag sets whether or not the -all flag will also include system applications or not. When I backup my phone I always use -system just in case. I guess when restoring your backup to a new phone with a higher Android version it would be advisable / safer to use -nosystem.

Once you’ve have made your decision on what to backup, simply type the command into the terminal. I usually use:

 adb backup -apk -shared -all -system -f ~/backups/nexus4_20130901.db   

A screen like this will appear on our Android device:

Backup dialog

You can enter a password to encrypt the backup. You will need this password to restore the backup. Thus make sure not to forget or don’t set one.

This process can take several minutes up to a couple of hours, depending on the settings you have chosen, especially when you included the shared storage. As soon as the backup completes, a toast message will appear saying “Backup Complete”

To Restore your phone:

With your device connected enter the following command into command prompt / terminal

 adb restore ~/backups/nexus4_20130901.db   

replacing ~/backups/nexus4_20130901.db with the location of your backup file.

A screen like this will appear on your Android device:

Restore dialog

Type in your current encryption password in case you set one and press ‘Restore my data’ to begin the restore. Again it can take several minutes up to a couple of hours. After the restore your should system should be back just like when you created the backup short of some widgets and wallpaper on the homescreen.  My alarms remained and for most applications it even kept my login. It kept everything.

NOTE: This will not backup your SMS. I suggest using something like SMS Backup & Restore