Android 如何显示用户可以选择要运行的应用程序的窗口

Android 如何显示用户可以选择要运行的应用程序的窗口,android,Android,我有一个应用程序,用户可以选择一个日期,然后它会打开日历,然后他们会添加一个事件或提醒 现在我正在使用com.google.android.calendar应用程序。但我正在检查是否安装了。如果没有,它应该让他们选择他们想要打开的应用程序。谁能告诉我怎么做?我几乎可以肯定我听到了一些关于这个的消息,但我一辈子都记不起它叫什么了 阅读 创建意图并设置额外信息后,请致电 startActivity()将其发送到系统。如果系统识别 可以处理意图的多个活动,它显示 对话框供用户选择要使用的应用程序。。。

我有一个应用程序,用户可以选择一个日期,然后它会打开日历,然后他们会添加一个事件或提醒

现在我正在使用
com.google.android.calendar
应用程序。但我正在检查是否安装了。如果没有,它应该让他们选择他们想要打开的应用程序。谁能告诉我怎么做?我几乎可以肯定我听到了一些关于这个的消息,但我一辈子都记不起它叫什么了

阅读

创建意图并设置额外信息后,请致电 startActivity()将其发送到系统。如果系统识别 可以处理意图的多个活动,它显示 对话框供用户选择要使用的应用程序。。。如果只有一个 处理意图的活动,系统立即启动它

此对话框中还有一个默认使用选定操作的选项

但是,如果要执行的操作可以由多个 应用程序和用户可能每次都喜欢不同的应用程序,例如 “共享”操作,对于该操作,用户可能有多个应用程序 他们可能共享一个项目,您应该显式显示选择器对话框

此选择器对话框也称为应用程序选择器

简单地说,您可以通过以下方式向App chooser显示:

String title = getResources().getString(R.string.chooser_title);
Intent chooser = Intent.createChooser(intent, title);
if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(chooser);
}
其中
intent
是您的日历意图,例如:

Intent calendarIntent = new Intent(Intent.ACTION_INSERT, Events.CONTENT_URI);
Calendar beginTime = Calendar.getInstance().set(2012, 0, 19, 7, 30);
Calendar endTime = Calendar.getInstance().set(2012, 0, 19, 10, 30);
calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis());
calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis());
calendarIntent.putExtra(Events.TITLE, "New event");
calendarIntent.putExtra(Events.EVENT_LOCATION, "My house");

将为您提供创建隐式日历意图时可用的额外内容/操作。正是这样。干杯是否可以以某种方式存储该选择,这样他们就不必每次都选择它?@discodowney如果您想让用户将所选应用程序设置为默认值,则不要使用
Intent.createChooser
。只需调用
startActivity(intent)
,系统就会显示响应此意图的应用程序列表,并可以将所选应用程序设置为默认应用程序。我更新了答案,但请阅读链接教程。它有所有需要的信息。