我正在尝试创建一个程序来获取所有已安装应用程序的名称。在我的Activity中,我有一个名为getApplicationNames
的方法应该返回此信息:
private ArrayList<String> getApplicationNames(Context context){
ArrayList<String> nameOfRunningApps = new ArrayList<>();
List<ApplicationInfo> runningApplications = context.getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA);
for(ApplicationInfo applicationInfo: runningApplications){
nameOfRunningApps.add(applicationInfo.name);
}
return nameOfRunningApps;
}
现在我想在onCreate()
中调用此方法:
ArrayList<String> installedProgramNames = getApplicationNames(??);
如何调用此方法来创建Context
的实例?这甚至可能吗?
答案 0 :(得分:1)
由于Activity
基本上在层次结构中扩展Context
,因此您可以在onCreate()
内轻松实现以下要求:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
ArrayList<String> installedProgramNames = getApplicationNames(this);
...
}
答案 1 :(得分:1)
在Android中,Activity
类扩展了Context
(请参阅documentation page顶部的层次结构图),因此您可以将自我引用传递给{{1通过getApplicationNames
关键字,即
this
对于来自支持库的@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayList<String> installedProgramNames = getApplicationNames(this);
}
的其他变体(例如Activity
)也是如此。
答案 2 :(得分:0)
使用应用程序上下文可以完成这项工作。
ArrayList<String> installedProgramNames = getApplicationNames(getApplicationContext());