getPackageManager () .getInstalledPackages (PackageManager.GET_ACTIVITIES) devuelve nulo
Si llamo a
PackageManager pm = getPackageManager () ;
List<PackageInfo> pis = pm.getInstalledPackages (PackageManager.GET_PROVIDERS) ;
Obtengo una lista de los paquetes instalados, incluidos los sobrevivientes que declaran (es decir, con los proveedores de pis [i]. Posiblemente no sean nulos).
Sin embargo, si incluyo PackageManager.GET_ACITIVITIES entre las banderas, como en
PackageManager pm = getPackageManager () ;
List<PackageInfo> pis = pm.getInstalledPackages (PackageManager.GET_ACTIVITIES | PackageManager.GET_PROVIDERS) ;
Espero obtener la "misma" lista de paquetes instalados, pero las actividades de pis [i]. También no son nulas. Pero no lo hago, me sale una lista vacía.
¿Hay algo especial en incluir PackageManager.GET_ACTIVITES entre las banderas que no se mencionan endocumentació?
Mi solución actual es dejar PackageManager.GET_ACTIVITIES fuera de las banderas, luego recorrer la lista devuelta de la siguiente manera:
for (PackageInfo pi : pis) {
try {
PackageInfo tmp = pm.getPackageInfo (pi.packageName, PackageManager.GET_ACTIVITIES) ;
pi.activities = tmp.activities ;
}
catch (NameNotFoundException e) {
Log.e (TAG, e.getMessage ()) ;
}
Pero eso parece un verdadero error.
La única mención que pude encontrar de getInstalledPackages (PackageManager.GET_ACTIVITIES) devolviendo una lista vacía esaqu, pero el problema en ese caso parece haber sido algo relacionado con llamar a getInstalledPackages () fuera del hilo principal de la aplicación y esa no es la situación en mi caso.
PD. esta es la versión .602 VZW de Gingerbread, en caso de que sea importante