内部应用程序选择器

时间:2013-06-23 12:43:04

标签: java android

如何在为意图选择应用时使用默认(不想创建自己的)应用选择器...显示选择器,用户选择一个应用并使用特定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

1 个答案:

答案 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结构的结果创建自己的选择器,而不只是一个)。