0

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

1 回答 1

1

显示选择器,用户选择一个应用程序,我用特定的 URI 显式调用它?

Android 中没有任何内容可以满足您的要求。

我必须使用“geo:”标签......有些应用程序不理解谷歌实现的语法并需要特定格式......我需要知道用户想要运行哪个,然后发送适当的 uri

这是不可能的,因为用户可用的应用程序列表取决于Uri. 您甚至不能手动构建一些返回选择而不是启动活动的“选择器”对话框,因为您不知道要在列表中填写哪些条目。

如果您的目标是:

  • Intent如果有一个或多个活动支持它,则使用某个,或者

  • Intent如果没有活动支持您的第一个活动,请使用其他活动Intent

那么你可以做的是:

  • 制作您的第一个Intent,并将其传递给queryIntentActivities()on PackageManager。如果这返回一个非空的List,你可以调用startActivity()Intent

  • 对所有候选结构重复上述步骤Intent,直到找到可以调用startActivity()的结构

或者,您可以:

  • 制作您的第一个Intent并调用startActivity()它,将该调用包装在try/catch块中以进行观察ActivityNotFoundException

  • 重复上述步骤,直到你成功调用startActivity()无一例外,或者直到你用完Intent可以尝试的结构

还有更复杂的选项(例如,使用所有可能Intent结构的结果创建您自己的选择器,而不仅仅是一个)。

于 2013-06-23T13:17:37.730 回答