Java 返回不带系统应用程序的已安装应用程序集

Java 返回不带系统应用程序的已安装应用程序集,java,android,privileges,Java,Android,Privileges,我想知道我需要编写什么代码才能返回一组非系统应用程序 public static List<?> getInstalledApplication(Context c) { return c.getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA); } 公共静态列表getInstalledApplication(上下文c){ 返回c.getPackageManager().

我想知道我需要编写什么代码才能返回一组非系统应用程序

    public static List<?> getInstalledApplication(Context c) {
    return c.getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA);

}
公共静态列表getInstalledApplication(上下文c){
返回c.getPackageManager().getInstalledApplication(PackageManager.GET_元数据);
}

这是返回所有内容的方法的代码。我只想显示可由用户启动的应用程序。我该怎么做?

查看@Wand Maker对这个问题的评论:

我认为您需要使用PackageManager查找所有支持意向过滤器的应用程序,包括操作“android.intent.action.MAIN”和类别“android.intent.category.LAUNCHER”-魔杖制造商7月6日15:23

您可以使用PackageManager.QueryInputActivities(,int))来实现这一点

例如

Intent意图=新意图(Intent.ACTION\u MAIN);
intent.addCategory(intent.CATEGORY_启动器);
列出活动=getPackageManager().QueryInputActivities(intent,0);

我已经试过了,但还是没用。你能确切地告诉我如何根据上面的代码编写它吗?它给出了关于getPackageManager()的错误,以及我应该返回什么来代替c?我添加了一个示例。如何调用它getPackageManager()是上下文()中的一个方法例如,你可以从一个activity调用它,当我写这个类扩展了activity时,告诉我从这个方法中删除静态引用,如果我这样做了,那么我调用这个方法的地方就会出现错误,说我应该把它改回static。这些都是你面临的基本Java问题。只是不要让你的方法是静态的。我强烈建议在尝试跳入池的最深处之前,先复习一下java/android开发的基础知识
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> activities = getPackageManager().queryIntentActivities(intent, 0);