Si llamogetPackageManager() (.getInstalledPackages PackageManager.GET_ACTIVITIES) devuelve un valor nulo
PackageManager pm = getPackageManager() ;
List<PackageInfo> pis = pm.getInstalledPackages (PackageManager.GET_PROVIDERS) ;
puedo obtener una lista de los paquetes instalados, incluyendo cualquier provivders que declaran (es decir, con pis [i] .providers posiblemente siendo no nulo).
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 con pis [i] .activities ser no nulo también. Pero no lo hago, obtengo una lista vacía.
¿Hay algo especial acerca de incluir PackageManager.GET_ACTIVITES entre las banderas que no se menciona en el documentation?
Mi trabajo actual es dejar todo PackageManager.GET_ACTIVITIES de las banderas, a continuación, 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 como un kludge real.
La única mención que pude encontrar de getInstalledPackages (PackageManager.GET_ACTIVITIES) que regresan una lista vacía es here, pero el problema en este caso parece haber sido algo acerca de llamar getInstalledPackages() fuera el hilo principal de la aplicación y que no es el situación en mi caso.
p.s. esta es la acumulación 0,602 VZW de pan de jengibre, en caso de que importa
Gracias PC, realmente me ayudó –