A System application is NOT an application which is signed by the OS’s platform signatures. This is a common mistake believed by many and we shall come to this later on. A System application is merely an application which is placed under
/system/app folder in an Android device. An application can only be installed in that folder if we have access to the OS’s ROM (
system.img), or if
/system is mounted read-write (which requires root permissions on the device).
System apps have several benefits:
- they are largely protected (e.g. cannot be uninstalled by the user), as
- being thus protected, they survive a factory-reset (only the apps, not their data)
- they are considered "trusted" (as the sources are assumed to be safe, confirmed by the ROM creator)
- being "trusted", they can get access to some restricted app permissions which are not available to "user-space apps" (e.g.
MANAGE_APP_TOKENS); if a user-space app requests those, they are denied.
A non-System application is an ordinary application, which will be installed under
/data/app folder, which is read-write. A user can uninstall such applications normally from the Settings application. One can check if an application is a System application or not using
ApplicationInfo.FLAG_SYSTEM. If the constant returns true, then the application in question is a System application.
Read more at ricston.com