在android中找不到getPackageManager()方法

时间:2014-03-14 04:50:36

标签: android

我的项目有问题。

虽然我导入了getPackageManager()

,但我找不到android.content.pm.PackageManager;方法

这段代码有什么问题

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

。感谢您的帮助

6 个答案:

答案 0 :(得分:48)

错误不在您的代码行中,而是在您调用它的位置。 getPackageManager()是Context的一种方法。您可以在Activity中使用此方法(因为Activity是一个Context),但如果您在其他地方调用它,则需要传递Context。在片段中,您还可以访问getActivity()函数,该函数返回Acitivity-Context。

    Context context...;

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

答案 1 :(得分:5)

如果您在“活动”中使用它,则不会收到getPacketManager的错误或警告,但如果您在片段中使用它,则应在其前面添加getActivity

示例:

PackageManager pm = getActivity().getPackageManager();

答案 2 :(得分:4)

试试这个..

我猜你延伸Fragment

因此,您必须使用getActivity().getPackageManager(),如下所示

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

延伸BroadcastReceiver

onReceive方面,您必须使用context.getPackageManager(),如下所示

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

答案 3 :(得分:4)

我认为这可能是由于Context

如果您正在使用

活动:然后您可以导入android.content.pm.PackageManager;

直接访问此方法

如果您使用片段:那么您需要提供getActivity()以便使用方法

<强>即

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

答案 4 :(得分:2)

如果您在类构造函数中将上下文作为参数传递,例如对于广播接收器

,您也可以尝试使用context.getPackageManager()

答案 5 :(得分:1)

是的。 如果你扩展片段使用getActivity().getPackageManager().getInstalledPackages(0); 别的context.getPackageManager().getInstalledPackages(0);