如何以意图开始活动后返回应用程序?

时间:2017-01-08 16:42:43

标签: android calendar

从我的Android应用程序中,我希望能够显示本机事件创建屏幕,当用户按下" Done"时,事件已创建,我想自动返回到我的应用程序。相反,现在发生的是,原生日历应用程序已打开,用户必须按后退按钮才能返回我的应用程序。

这是我的代码:

public void onButtonClicked(View view) {
    Intent intent = new Intent(Intent.ACTION_EDIT);
    intent.setType("vnd.android.cursor.item/event");
    intent.putExtra(Events.TITLE, "New event");
    intent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, new Date().getTime());
    intent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, new Date().getTime() + 1000 * 60 * 60);
    startActivityForResult(intent, 1);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    System.out.println("onActivityResult!");
}

此外,永远不会调用onActivityResult(...)。欢迎任何建议!

1 个答案:

答案 0 :(得分:0)

首先,ACTION_EDIT不适用于startActivityForResult()it does not return anything

除此之外,用户完成编辑日历事件时所做的决定取决于日历应用程序的实施者。您正在将工作委托给第三方应用程序;第三方应用程序的功能取决于其开发人员。这与将您的网站链接到其他人的网站没有什么不同:您不会选择该网站的功能。

此外,没有单一的“原生日历应用”。有数以千计的Android设备型号,原则上它们可以随意提供。这包括响应您Intent的零个,一个或多个活动。具有Play商店可能的设备已安装Google日历,但不一定,并且用户可以使用其他日历应用程序(例如,他们从Play商店或其他地方安装的应用程序)。因此,当用户完成日历应用程序开发人员编辑日历条目时,不仅要决定该做什么,而且还有许多日历应用程序,每个应用程序都有自己的开发人员和自己在此区域内做出的决策。

启动第三方应用时,请勿对结果导航流做出许多假设。如果您需要这种程度的控制,在这种情况下,您必须编写自己的日历功能并将其烘焙到您的应用程序中。