在Android中找不到getPackageManager()方法

vybvopom  于 2022-12-16  发布在  Android
关注(0)|答案(7)|浏览(391)

我的项目有问题。
虽然导入了android.content.pm.PackageManager;,但找不到getPackageManager()方法
这段代码有什么问题

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

1.谢谢你的帮助

djp7away

djp7away1#

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

Context context...;

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

n6lpvg4x2#

如果您在Activity中使用它,则不会收到getPacketManager的错误或警告,但如果您在Fragments中使用它,则应该在它前面加上getActivity

示例:

PackageManager pm = getActivity().getPackageManager();

kqlmhetl

kqlmhetl3#

试试这个
我猜你是...
因此,您必须像下面这样使用getActivity().getPackageManager()

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

扩展BroadcastReceiver
onReceive侧,必须使用context.getPackageManager(),如下所示

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

kwvwclae4#

我想这可能是由于Context
如果您正在使用

**活动:**然后您可以通过导入android.content.pm.PackageManager;直接访问此方法

如果使用Fragment:,则需要提供getActivity()才能使用方法

即:

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

yqkkidmi5#

如果你有上下文作为类构造函数中的参数传递,你也可以尝试context.getPackageManager(),例如对于Broadcast receiver

eh57zj3b

eh57zj3b6#

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

wydwbb8l

wydwbb8l7#

如果使用Jetpack合成和Kotlin,请使用LocalContext.current.packageManager

相关问题