2017-01-08 2 views
0

Из моего Android-приложения я хочу показать экран создания собственного события и когда пользователь нажимает «Готово», событие создается, и я хочу автоматически вернуться в свое приложение. Вместо этого, что происходит прямо сейчас, это открытие собственного приложения Calendar, и пользователь должен нажать кнопку «Назад», чтобы вернуться в мое приложение.Как вернуться в приложение после начала деятельности с намерением?

Это мой код:

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(...) никогда не вызывается. Любые предложения приветствуются!

ответ

0

Во-первых, ACTION_EDIT не предназначен для использования с startActivityForResult(), так как it does not return anything.

Кроме того, решение о том, что делать, когда пользователь завершает редактирование события календаря, зависит от исполнителей приложения календаря. Вы делегируете работу стороннему приложению; то, что делает стороннее приложение, зависит от его разработчиков. Это ничем не отличается от ссылки на ваш веб-сайт на чужой веб-сайт: вы не выбираете, что делает этот веб-сайт.

Кроме того, нет единого «собственного приложения для календарей». Существуют тысячи моделей устройств Android, и в принципе они могут поставлять все, что захотят. Это включает в себя нулевые, одно или несколько действий, которые отвечают на ваш Intent. У устройств, у которых есть Play Store , вероятно, установлен Google Calendar, но не обязательно, и пользователь может использовать какое-то другое приложение для календаря (например, тот, который они установили из Play Маркета или в другом месте). Таким образом, не только решение о том, что делать, когда пользователь завершает редактирование записи календаря до разработчиков приложения календаря, но есть множество приложений для календаря, каждый со своими собственными разработчиками и собственными решениями для принятия в этой области.

Когда вы запускаете стороннее приложение, не делайте много предположений о результирующем потоке навигации. Если вам нужна эта степень контроля, в этом случае вам нужно будет написать свою собственную функцию календаря и испечь ее в своем приложении.

+0

Я упоминал, что у меня мало опыта с намерениями? Ха-ха. Спасибо за ваш быстрый ответ. Есть ли возможность открыть экран ввода календаря по умолчанию без использования намерений? Мне, вероятно, придется начать поиск по умолчанию компонента с открытым исходным кодом, который делает это. –

+1

@TomvanZummeren: «Есть ли возможность открыть экран ввода календаря по умолчанию, не используя намерения?» - нет «экрана ввода календаря по умолчанию». – CommonsWare

+0

На самом деле я родом из iOS, и я просто искал эквивалент EKEventEditViewController, но я думаю, что на Android этого не происходит. –