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, на случай, если это имеет значение