Если я позвоню
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 () вне основного потока приложения. и это не ситуация в моем случае.
p.s. это сборка Gingerbread .602 VZW на случай, если