¿Cómo verifico si una aplicación es una aplicación que no es del sistema en Android?

Recibo una lista deApplicationInfo Objetos con packageManager.getInstalledApplications (0) e intentando clasificarlos por si son o no una aplicación del sistema.

Por un tiempo he estado usando la técnica descritaaqu, sin embargo, después de ver que en mi aplicación, algunas de las aplicaciones no estaban en la lista de aplicaciones que no son del sistema (comoFaceboo, que cuando está disponible le pide al sistema que se instale en la tarjeta SD). Después de la próxima lectura de la documentación real para ApplicationInfo.FLAG_SYSTEM, y entendiendo que en realidad no filtra las aplicaciones del sistema, ahora estoy buscando un nuevo enfoque.

Supongo que existe una gran brecha entre los UID del sistema y las aplicaciones que no son del sistema que puedo reunir para hacer esta distinción, pero hasta el momento no he encontrado una respuesta. También busqué otras banderas, comoApplicationInfo.FLAG_EXTERNAL_STORAGE, sin embargo, estoy apoyando API 1.5.

¿Alguien tiene una solución real para esto (sin involucrar aFLAG_SYSTEM)?

Respuestas a la pregunta(22)

Su respuesta a la pregunta