Как запустить приложение Android Calendar с помощью Intent (Froyo)

Я хочу открыть приложение «Календарь» из приложения Android. Когда я искал в Интернете, все, что я получил, – это создание новых событий с использованием намерений. Я мог бы найти намерения открыть Контакты и Галерею и т. Д.

Можно ли запустить календарь на определенную неделю или неделю? Если возможно, кто-то может помочь мне с этим.

Заранее спасибо.

Intent intent = new Intent(Intent.ACTION_EDIT); intent.setType("vnd.android.cursor.item/event"); intent.putExtra("title", "Some title"); intent.putExtra("description", "Some description"); intent.putExtra("beginTime", eventStartInMillis); intent.putExtra("endTime", eventEndInMillis); startActivity(intent); 

Вы можете открыть «Календарь» двумя способами:

1) по конкретной дате 2) конкретным событием

Для этого вам нужно добавить следующие два разрешения

    

1) по конкретной дате:

 Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon(); builder.appendPath("time"); ContentUris.appendId(builder, Calendar.getInstance().getTimeInMillis()); Intent intent = new Intent(Intent.ACTION_VIEW) .setData(builder.build()); startActivity(intent); 

2) конкретным событием:

 long eventID = 200; Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID); Intent intent = new Intent(Intent.ACTION_VIEW).setData(uri); startActivity(intent); 

Примечание. CalendarContract провайдера контента был добавлен в Android SDK в API уровня 14. Для получения дополнительной информации вы можете посетить эту ссылку

После просмотра приложения Calendar в исходном коде Android вы можете напрямую ссылаться на приложение AgendaActivity. Другие не будут работать. Как отмечали другие плакаты, вы можете напрямую взаимодействовать с курсором для чтения / создания событий, но вы не можете вызвать приложение календаря для представления, отличного от AgendaView. Причина в том, что разработчики ограничили эту способность в манифесте для приложения Cal, используя следующие определения активности:

      

Обратите внимание, что только функция AgendaActivity имеет android: exported = “true”. Если вы попытаетесь вызвать другие действия, вы получите исключение разрешения.

Однако вы можете вызвать функцию AgendaActivity в произвольный день со следующим кодом:

  Calendar tempCal = (Calendar) mCalendar.clone(); tempCal.set(year, month, day); Intent calendarIntent = new Intent() ; calendarIntent.putExtra("beginTime", tempCal.getTimeInMillis()); calendarIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP); calendarIntent.setClassName("com.android.calendar","com.android.calendar.AgendaActivity"); startActivity(calendarIntent); 

Использование намерений для просмотра данных календаря

Поставщик календаря предлагает два разных способа использования намерения VIEW:

 To open the Calendar to a particular date. To view an event. 

добавить разрешения для манифеста

   

Вот пример, показывающий, как открыть Календарь на определенную дату:

  // A date-time specified in milliseconds since the epoch. long startMillis; ... Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon(); builder.appendPath("time"); ContentUris.appendId(builder, startMillis); Intent intent = new Intent(Intent.ACTION_VIEW) .setData(builder.build()); startActivity(intent); 

Вот пример, показывающий, как открыть событие для просмотра:

 long eventID = 208; ... Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID); Intent intent = new Intent(Intent.ACTION_VIEW) .setData(uri); startActivity(intent); 

Is it possible to launch the Calendar to a specific week or day?

Итак, теперь это возможно, но требует min API 14 .

Для получения дополнительной информации посетите http://developer.android.com/guide/topics/providers/calendar-provider.html#intents

AgendaActivity загружает представление «Повестка дня».

По моему опыту вы не можете глубоко увязать деятельность дня, недели и месяца на складе Android, однако вы можете использовать «LaunchActivity», который загружает последнее открытое представление.

Посредством процесса утомительных экспериментов я обнаружил, что:

Intent calendarIntent = new Intent() ;
calendarIntent.setClassName("com.android.calendar","com.android.calendar.AgendaActivity");

… работает для меня, чтобы начать работу по повестке дня Календаря. Не пробовал, но, возможно, com.android.calendar.DayActivity, .WeekActivity и .MonthActivity запустит соответствующие действия.

  • Android.app Фрагменты против android.support.v4.app с помощью ViewPager?
  • GooglePlayServicesUtil против GoogleApiAvailability
  • Android. Фрагмент getActivity () иногда возвращает null
  • Ошибка Eclipse DDMS «Невозможно связать с локальным 8600 для отладчика»
  • Конечные точки Google и аутентификация пользователя
  • Неподдерживаемая версия major.minor 52.0 в моем приложении
  • Служба Android для проверки возможности подключения к Интернету?
  • Как проанализировать файл AndroidManifest.xml внутри пакета .apk
  • Переместить макеты, когда отображается мягкая клавиатура?
  • Фрагмент Карт Google, возвращающий нуль внутри fragmentа
  • ConnectivityManager.CONNECTIVITY_ACTION устарел
  • Давайте будем гением компьютера.