I'm using the Samsung Galaxy Gio, and my problem is that all my apps get saved to the phone, using up all the storage. I've got space left on my SD card but it doesn't want to install anything there. I found a function that lets you move apps to SD card but sadly it doesn't work with 99% of the apps installed.

3 Answers
3

Background

Android has specific rules regarding the installation of applications and their physical location. It works like and hierarchical structure:

If the app has a specified location by the developer, this takes priority.

If it is not specified in the app, then the default install location is used.

Android has 3 identifiers for app storage location: that may be mentioned on the application manifest android:installLocation:

"internalOnly":

The application must be installed on the internal device storage only. If this is set, the application will never be installed on the external storage. If the internal storage is full, then the system will not install the application.

"auto":

The application may be installed on the external storage, but the system will install the application on the internal storage by default. If the internal storage is full, then the system will install it on the external storage.

"preferExternal":

The application prefers to be installed on the external storage (SD card). There is no guarantee that the system will honor this request. The application might be installed on internal storage if the external media is unavailable or full, or if the application uses the forward-locking mechanism (not supported on external storage).

Old applications may have no choice but to install on the internal storage, as per the Google Documentation:

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).

What can I do?

You can manage the installed applications and set their storage location, all from one place:

Tap "home" to return to your device home screen;

Tap your device "menu" button;

Depending on your device, you either have to:

Tap "Manage apps";

Tap "Settings" > "Applications" > "Manage applications".

Now access the third tab where it reads "USB Storage" or "On SD card" (again, varies with the device);

Here are listed all the applications that are allowed to be moved to your External Storage, tab over one to bring up more options about it;

When the application details panel opens, you have a button "Move to SD card", use it to move that application to your External Storage;

Press "back" to return to the list. If you've moved the app to the external memory, you will notice that a green tick is present on the right side on the list, to let you know that the application file is currently on your External Storage.

This is a safe guide to have your OS managing the applications and moving then from Internal Storage to External Storage without hacks or tricks. You can read all about it on the Google Official Documentation.

As the sdcard could become inaccessible (e.g. when mounted via USB to a computer, or when removed), there are some groups of apps which cannot and should not be installed on external storage -- as they could not keep up their work in those cases. These include:

apps using widgets (widgets could no longer update if the storage is gone)

apps using services (these services would break then)

apps providing sync adapters (these adapters would be inaccessible)

Most of these apps are not even able to be moved to sdcard, as their developers declared them "internalOnly" (see Zuul's answer). But some developers forget about this, and so it might happen you move an app which you better had not -- and then wonder about above mentioned things breaking (most users notice this with widgets only). So better keep this in mind as well when moving apps to external storage.

You also have to keep in mind that move apps to sdcard will make them slower, and since they still keep data on internal storage, there can be some annoying side effects: for example, if you move Twitter for Android to sdcard, you will have to login again every time.