如何初始化Context以获取已安装应用程序的名称?

时间:2018-06-14 10:51:51

标签: android android-context

我正在尝试创建一个程序来获取所有已安装应用程序的名称。在我的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的实例?这甚至可能吗?

3 个答案:

答案 0 :(得分:1)

Activity

由于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());