#java #android #android-package-managers
#java #Android #android-менеджеры пакетов
Вопрос:
Приведенный выше код предоставляет не все установленные пакеты (например, он не предоставляет пакет, из которого выполняется этот код). Код запускается из основного потока, никогда не пробовал другие версии устройства / эмулятора, кроме device / emulator 2.2. Есть идеи, что не так?
Спасибо
public Map<String, String> getInstalledPackages()
{
Map<String, String> apps = new HashMap<String, String>();
List<PackageInfo> appsInfo = pm.getInstalledPackages(0);
for (PackageInfo appInfo: appsInfo)
{
try
{
apps.put(appInfo.packageName, appInfo.versionName);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return apps;
}
PS: если я попробую это с помощью pm.getInstalledPackages (PackageManager.GET_ACTIVITIES) возвращает пустую карту, опробованную на устройстве ony
Ответ №1:
Если я заменю
List<PackageInfo> appsInfo = pm.getInstalledPackages(0);
с
List<PackageInfo> appsInfo = getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES);
Я получаю пакет своего приложения.