如何显示一个窗口,用户可以在其中选择要运行的应用程序

时间:2016-01-16 21:10:48

标签: android

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

现在我正在使用com.google.android.calendar应用。但我正在检查是否已安装。如果没有,它应该让他们选择他们想要打开的应用程序。谁能告诉我我是怎么做到的?我几乎可以肯定我听说过这件事,但我不记得我的生活是什么叫它。

1 个答案:

答案 0 :(得分:1)

阅读this tutorial

  

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

此对话框中还有一个选项可以默认使用所选操作。

  

但是,如果要执行的操作可以由多个处理   应用和用户可能每次都更喜欢不同的应用 - 例如   "份额"动作,用户可能通过该动作拥有多个应用程序   他们可能会共享一个项目 - 你应该明确地显示一个选择器对话框......

此选择器对话框也称为App选择器。

简而言之,您可以通过以下方式显示App选择器:

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");