以下代码基本上是从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);
}
不幸的是,app选择器没有显示出来。任何人都可以指出上述代码有什么问题吗?
我想使用选择器允许用户选择应用,并让应用程序记住此应用,稍后在代码中的其他活动中启动它,
答案 0 :(得分:2)
您的Intent
与设备上的任何应用都不匹配。我的猜测是它缺少MIME类型。在setType()
上调用intent
,传入您尝试共享的内容的MIME类型。
更大的问题是,您实际上并未分享任何内容(不是EXTRA_TEXT
,也不是EXTRA_STREAM
),因此您可能会因为Intent
响应任何活动而崩溃。
更新:根据您更新的问题,您似乎正在选择"选择"从字面上看。 :-)当选择器允许用户从几种可能的匹配活动中选择一种时,选择器然后启动所选择的活动。在较新版本的Android(5.1 +,IIRC)上,有一些方法可以让您了解选择器选择的内容。但是,如果你的目标是不来开始一项活动,而只是让用户选择一个...... AFAIK,你需要根据PackageManager
和{来自己推出自己的用户界面。 {1}}。这基本上是主屏幕的作用:查找实施queryIntentActivities()
/ ACTION_MAIN
的所有活动,然后显示它们供用户选择。我的Launchalot
sample app演示了此过程。