0

以下代码本质上是从Android 文档中复制的:

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);
}

不幸的是,应用程序选择器没有出现。谁能指出上面的代码有什么问题?

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

4

1 回答 1

2

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

您更大的问题是您实际上并没有共享任何东西(no EXTRA_TEXT, nor EXTRA_STREAM),因此您可能会崩溃任何响应您的Intent.

更新:根据您更新的问题,您似乎过于从字面上理解“选择器”。:-) 虽然选择器允许用户从几个可能的匹配活动之一中进行选择,但选择器随后会启动所选择的活动。在较新版本的 Android(5.1+,IIRC)上,您可以通过多种方式找出选择器选择的内容。但是,如果您的目标不是开始一项活动,而只是让用户选择一个活动...... AFAIK,您需要为此推出自己的 UI,基于PackageManagerand queryIntentActivities()。这基本上就是主屏幕的作用:找到所有实现ACTION_MAIN/的活动CATEGORY_LAUNCHER,然后显示它们供用户选择。我的Launchalot示例应用程序演示了这个过程。

于 2017-05-29T23:04:26.897 回答