Не удается найти метод getPackageManager() в android

У меня проблема с моим проектом.

Я не могу найти метод getPackageManager(), хотя я импортировал android.content.pm.PackageManager;

что не так с этим фрагментом кода

List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);

. Спасибо за помощь

Ответы

Ответ 1

Ошибка не в вашей строке кода, а там, где вы ее вызываете. getPackageManager() - метод контекста. Вы можете использовать этот метод внутри Activity (потому что Activity - это контекст), но если вы вызываете его в другом месте, вам нужно передать контекст. Во фрагменте вы также можете получить доступ к функции getActivity(), которая возвращает контекст Acitivity.

    Context context...;

    context.getPackageManager();
    getActivity().getPackageManager();

Ответ 2

Я думаю, что это может быть связано с Context

Если вы используете

Активность:. Затем вы можете напрямую получить доступ к этому методу, импортировав android.content.pm.PackageManager;

Если вы используете Фрагмент: Затем вам нужно предоставить getActivity() для использования метода

т.е.

List<PackageInfo> packs = getActivity().getPackageManager().getInstalledPackages(0);

Ответ 3

Попробуйте это.

Я думаю, что вы extends есть Fragment

Итак, вы должны использовать getActivity().getPackageManager(), как показано ниже

List<PackageInfo> packs = getActivity().getPackageManager().getInstalledPackages(0);

Или extends есть BroadcastReceiver

В стороне onReceive вы должны использовать context.getPackageManager(), как показано ниже

List<PackageInfo> packs = context.getPackageManager().getInstalledPackages(0);

Ответ 4

вы также можете попробовать context.getPackageManager(), если контекст передан как параметр в вашем конструкторе класса, например, для широковещательного приемника

Ответ 5

Угу. если вы используете фрагмент getActivity().getPackageManager().getInstalledPackages(0); else context.getPackageManager().getInstalledPackages(0);