如何使用 Android 中的应用选择器选择要启动的应用?

How to choose any app to launch with the app chooser in Android?

下面的代码基本上是从Android document复制过来的:

Intent intent = new Intent(Intent.ACTION_SEND);
// Create intent to show chooser
Intent chooser = Intent.createChooser(intent, "Choose an app");
// Verify the intent will resolve to at least one activity
if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(chooser);
}

很遗憾,应用选择器未显示。谁能指出上面的代码有什么问题?

我想使用选择器允许用户 select 一个应用程序,并让该应用程序记住这个应用程序,稍后在另一个 activity 代码中启动它,

您的 Intent 与设备上的任何应用都不匹配。我的猜测是它是缺少的 MIME 类型。在 intent 上调用 setType(),传入您尝试共享的内容的 MIME 类型。

你更大的问题是你实际上没有分享任何东西(没有 EXTRA_TEXT,也没有 EXTRA_STREAM),所以你可能会崩溃 activity 响应你的 Intent.

UPDATE:根据您更新后的问题,您似乎从字面上理解了 "chooser"。 :-) While the chooser allows the user to choose from one of several possible matching activities, the chooser then starts the chosen activity.在 Android(5.1+,IIRC)的较新版本中,您可以通过多种方式了解选择器选择的内容。但是,如果您的 objective 是 而不是 来启动 activity,而只是让用户选择一个...据我所知,您需要自己推出 UI 基于 PackageManagerqueryIntentActivities()。这基本上就是主屏幕的作用:找到所有实现 ACTION_MAIN/CATEGORY_LAUNCHER 的活动,然后显示它们供用户选择。我的 Launchalot sample app 演示了这个过程。