getPackageManager () .getInstalledPackages (PackageManager.GET_ACTIVITIES) retorna null

Se eu ligar

    PackageManager pm = getPackageManager () ;
    List<PackageInfo> pis = pm.getInstalledPackages (PackageManager.GET_PROVIDERS) ;

Eu recebo uma lista de pacotes instalados, incluindo todos os provedores que eles declaram (ou seja, com pis [i] .providers possivelmente não-nulos

No entanto, se eu incluir PackageManager.GET_ACITIVITIES entre os sinalizadores, como em

    PackageManager pm = getPackageManager () ;
    List<PackageInfo> pis = pm.getInstalledPackages (PackageManager.GET_ACTIVITIES | PackageManager.GET_PROVIDERS) ;

Espero obter a lista "mesma" de pacotes instalados, mas com as atividades pis [i]. Também não são nulas. Mas não, recebo uma lista vazia.

Existe algo especial em incluir PackageManager.GET_ACTIVITES entre os sinalizadores que não são mencionados nodocumentaçã?

Minha solução atual é deixar PackageManager.GET_ACTIVITIES fora dos sinalizadores e percorrer a lista retornada da seguinte maneira:

    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 ()) ;
            }

Mas isso parece um verdadeiro argument

A única menção que encontrei de getInstalledPackages (PackageManager.GET_ACTIVITIES) retornando uma lista vazia éaqu, mas o problema nesse caso parece ter sido sobre chamar getInstalledPackages () fora do segmento principal do aplicativo e essa não é a situação no meu cas

p.s. esta é a versão .602 VZW do Gingerbread, caso isso importe

questionAnswers(1)

yourAnswerToTheQuestion