I have apps such as Any.DO and AK Notepad installed in My Samsung Galaxy Y Android 2.3.6 phone. I have tried Titanium Backup and App 2 SD (move app to SD) but still not able to move these apps to the SD card at all. What's wrong? Can someone help me out here?
1What happens if you try to move the apps to SD?– FlowAug 17, 2012 at 20:16
1@Flow see my answer. Both apps have widgets integrated, so they most likely do not support App2SD.– Izzy ♦Aug 17, 2012 at 20:20
If you want to move your app to sd card because of "low internal storage" go check android.stackexchange.com/questions/30620/…– Sylvain HuardOct 10, 2012 at 2:46
An app must explicitly support App2SD, or you cannot move it to the card. There are several reasons why an app might not support it:
- using widgets (both mentioned apps seem to fall into this category. AK Notepad: "Pin notes to your home screen"; Any.DO: "You can even add our widget to your homescreen")
- running a service
As the sdcard would be unaccessible when connecting to a computer, both things would "crash" (as they could no longer access their data etc.). Of course there's always the possibility the developer simply didn't care -- in which case you should contact him and ask.
I've encountered an interesting case - an app, f-droid.org/repository/browse/?fdid=com.nanoconverter.zlab which has a defect - it offers background service and widget, yet my 4.2.2 can move it to SD card (losing that functionality, ofc). Jan 18, 2016 at 16:03
There are some factors that may affect this:
An app must explicitly declare that it's preferable/possible to be installed on SD card.
Beginning with API Level 8, you can allow your application to be installed on the external storage (for example, the device's SD card). This is an optional feature you can declare for your application with the
android:installLocationmanifest attribute. If you do not declare this attribute, your application will be installed on the internal storage only and it cannot be moved to the external storage.
An app is set to compile using API 7 (Froyo) or lower, which doesn't support installing an app on SD card (even if it's installed on GingerBread or newer devices)
The ability for your application to install on the external storage is a feature available only on devices running API Level 8 (Android 2.2) or greater. Existing applications that were built prior to API Level 8 will always install on the internal storage and cannot be moved to the external storage (even on devices with API Level 8). However, if your application is designed to support an API Level lower than 8, you can choose to support this feature for devices with API Level 8 or greater and still be compatible with devices using an API Level lower than 8.
The reasons why some apps are not preferable to be installed on SD card are as following:
When the user enables USB mass storage to share files with their computer (or otherwise unmounts or removes the external storage), any application installed on the external storage and currently running is killed. The system effectively becomes unaware of the application until mass storage is disabled and the external storage is remounted on the device. Besides killing the application and making it unavailable to the user, this can break some types of applications in a more serious way. In order for your application to consistently behave as expected, you should not allow your application to be installed on the external storage if it uses any of the following features, due to the cited consequences when the external storage is unmounted:
Servicewill be killed and will not be restarted when external storage is remounted. [...]
Your alarms registered with
AlarmManagerwill be cancelled. [...]
Input Method Engines
Your IME will be replaced by the default IME. [...]
Your running Live Wallpaper will be replaced by the default Live Wallpaper. [...]
Your App Widget will be removed from the home screen. When external storage is remounted, your App Widget will not be available for the user to select until the system resets the home application (usually not until a system reboot).
Your accounts created with
AccountManagerwill disappear until external storage is remounted.
AbstractThreadedSyncAdapterand all its sync functionality will not work until external storage is remounted.
DeviceAdminReceiverand all its admin capabilities will be disabled, which can have unforeseeable consequences for the device functionality, which may persist after external storage is remounted.
Broadcast Receivers listening for "boot completed"
The system delivers the
ACTION_BOOT_COMPLETEDbroadcast before the external storage is mounted to the device. If your application is installed on the external storage, it can never receive this broadcast.
If your application uses any of the features listed above, you should not allow your application to install on external storage.
(Some parts are redacted. They are explaining what developers have to do to make their apps working properly after the SD card is remounted.)
Note: this answer serves as general information to "Why some apps cannot be moved to SD card"
It is definitely possible to move apps to the SD card and still have them working perfectly (widgets and services included) via Link2SD.
EDIT: Using this method requires root access on your phone and also needs your SD card to be formatted to have a second partition on it.
In order to avoid redundantly posting the answer again over here, I'll just drop a link to it: https://android.stackexchange.com/a/145591/167026