getPackageManager () .getInstalledPackages (PackageManager.GET_ACTIVITIES) возвращает ноль

Если я позвоню

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

Я получаю список установленных пакетов, в том числе всех провайдеров, которые они объявляют (т. Е. С pis [i] .providers, возможно, ненулевым).

Однако, если я включу PackageManager.GET_ACITIVITIES среди флагов, как в

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

Я ожидаю получить «тот же» список установленных пакетов, но с pis [i] .activities также ненулевым. Но я не получаю, я получаю пустой список.

Есть ли что-то особенное в том, чтобы включить PackageManager.GET_ACTIVITES в флаги, которых нет вдокументация?

Моя текущая работа заключается в том, чтобы оставить PackageManager.GET_ACTIVITIES вне флагов, а затем перебрать возвращенный список следующим образом:

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

Но это похоже на настоящий клудж.

Единственное упоминание о том, что getInstalledPackages (PackageManager.GET_ACTIVITIES), возвращающий пустой список, - этоВот, но проблема в этом случае, похоже, заключалась в вызове getInstalledPackages () вне основного потока приложения, а в моем случае это не так.

постскриптум это сборка Gingerbread .602 VZW, на случай, если это имеет значение

Ответы на вопрос(1)

Ваш ответ на вопрос