如何在为意图选择应用时使用默认(不想创建自己的)应用选择器...显示选择器,用户选择一个应用并使用特定URI明确调用它?
Intent intent = new Intent(Intent.ACTION_SEND);
// Create and start the chooser
Intent chooser = Intent.createChooser(intent, "title");
startActivity(chooser); //I dont want to start the intent ... just to know which one user chose
答案 0 :(得分:1)
显示选择器,用户选择一个应用程序,并使用特定URI明确调用它?
Android内置的功能无法满足您的要求。
我必须使用“geo:”标签...某些应用程序不理解google实现的语法,需要特定格式...我需要知道用户想要运行哪一个然后发送适当的uri
这是不可能的,因为用户的可用应用列表取决于Uri
。您甚至无法手动构建一些返回选择的“选择器”对话框,而不是启动活动,因为您不知道要在列表中填入哪些条目。
如果您的目标是:
如果有一项或多项活动支持,请使用某个Intent
,或
如果没有活动支持您的第一个Intent
Intent
然后你可以做的是:
制作您的第一个Intent
,并将其传递给queryIntentActivities()
上的PackageManager
。如果此操作返回非空List
,您可以在startActivity()
Intent
对所有候选Intent
结构重复上述步骤,直到找到一个可以在
startActivity()
的结构。
或者,您可以:
制作您的第一个Intent
并在其上调用startActivity()
,将该调用包含在try
/ catch
块中以观察ActivityNotFoundException
< / p>
重复上述步骤,直至成功拨打startActivity()
,无异常,或直到Intent
结构用完为止
还有更复杂的选项(例如,使用所有可能Intent
结构的结果创建自己的选择器,而不只是一个)。