¿Cómo puedo detectar dinámicamente si mi aplicación es normal o normal?
¿Cómo distingo entre una aplicación del sistema y una normal? Miré a través de android PackageManager
y no pude encontrar ninguno.
Editar: Quiero diferenciar a través de código.
if(system app) { //do something } else{ //do nothing }
Puede intentar usar los indicadores disponibles en la clase ApplicationInfo (android.conent.pm). Por ejemplo:
... PackageManager pm = getPackageManager(); List<ApplicationInfo> installedApps = pm.getInstalledApplications(0); for (ApplicationInfo ai: installedApps) { if ((ai.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { // System app - do something here ... } else { // User installed app? } }
¡Olvídese de PackageManager! Sólo preguntó por su propia aplicación. Dentro de su actividad # onCreate (Bundle) puede llamar a getApplicationInfo () y probar sus banderas de esta manera:
boolean isSystemApp = (getApplicationInfo().flags & (ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP)) != 0;
Para empezar, no puedes desinstalar una aplicación de sistema, pero puedes desinstalar una aplicación normal mediante "Configuración> Aplicaciones> Administrar aplicaciones".
Una función simple:
public boolean isUserApp(ApplicationInfo ai,boolean getUpdatedSystemApps){ if ((ai.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { if(getUpdatedSystemApps==true){ if((ai.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0){ return true; } else { return false; } } return false; } else { return true; } }
Usted puede utilizar encima de la función como:
PackageManager pm = getPackageManager(); List<ApplicationInfo> allApps = pm.getInstalledApplications(0); for (ApplicationInfo ai: allApps) { if (isUserApp(ai,true)) { // User app or Updated SystemApp - do something here ... } else { // System app } }
Veo una respuesta completa de Pankaj Kumar en este enlace SO: " ¿Cómo puedo comprobar si una aplicación es una aplicación que no es de sistema en Android? " O en este blog por él: " http://pankajchunchun.wordpress.com/2014 / 07/08 / cómo-a-verificar-si-aplicación-es-sistema-app-o-no-por-firma-firmada / ".