我正在尝试检索android中安装的应用程序列表。我写了以下代码:
final Intent myIntent = new Intent(Intent.ACTION_MAIN, null);
myIntent.addCategory(Intent.CATEGORY_LAUNCHER);
final List AppsList = Context.getPackageManager().queryIntentActivities(myIntent, 0);
我收到此错误:
Cannot make a static reference to the non-static method getPackageManager() from the type Context
知道Context
和PackageManager
都是抽象类,无法解决错误。请帮助。
答案 0 :(得分:2)
尝试:
final List AppsList = getApplicationContext().getPackageManager().queryIntentActivities(myIntent, 0);
答案 1 :(得分:2)
您需要使用上下文实例来调用此方法。
通常,当您在活动或服务中时,上下文为this
或getContext()
。您应该使用此技术:
如果您想要更全局的上下文,可以使用getApplicationContext()
,如果您想要访问嵌入式数据库,这非常有用。
答案 2 :(得分:1)
知道Context和PackageManager都是抽象类
使用Context
的具体子类的实例,例如Activity
。
由于您的代码可能已经在Context
的子类中的方法中,因此将有问题的行更改为:
final List AppsList = getPackageManager().queryIntentActivities(myIntent, 0);
如果出于某种原因,上面显示的代码不在Context
的子类的方法中,则需要将一些Context
实例传递到此代码所在的位置,并调用{ {1}}就可以了。