我的项目有问题。
虽然我导入了getPackageManager()
android.content.pm.PackageManager;
方法
这段代码有什么问题
List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
。感谢您的帮助
答案 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);