如何获取 Android 设备上已安装应用的列表

How to get a list of installed apps on Android device

我正在尝试制作一个简单的 Android 启动器。通过教程和其他一些堆栈溢出帖子,我发现了这种获取已安装应用程序列表的方法:

        Intent intent = new Intent(Intent.ACTION_MAIN, null);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        List<ResolveInfo> rawAppList = getApplicationContext()
                                        .getPackageManager()
                                        .queryIntentActivities( mainIntent, 0);

但是,当我尝试 运行 时,我只得到一个包含 4 个应用程序的列表。我用来测试的模拟器有 14 个应用程序通过默认启动器显示。理想情况下,我将能够在我自己的启动器中看到所有这些。

我试过克隆 git project 以同样的方式安装应用程序。当 运行 在同一个模拟器上运行它时,所有 14 个应用程序都按预期检索。

很明显我做错了什么,但我不知道是什么。据我所知,我观看的教程没有额外的步骤。在我看到的任何其他堆栈溢出帖子中似乎都没有建议任何额外的步骤。

谁能看出我做错了什么?

为了遵守包可见性规则,您需要一个 <queries> 元素作为根 <manifest> 元素的子元素:

<queries>
    <intent>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.action.LAUNCHER" />
    </intent>
</queries>