Как запустить приложение Android Calendar с помощью Intent (Froyo)
Я хочу открыть приложение «Календарь» из приложения Android. Когда я искал в Интернете, все, что я получил, – это создание новых событий с использованием намерений. Я мог бы найти намерения открыть Контакты и Галерею и т. Д.
Можно ли запустить календарь на определенную неделю или неделю? Если возможно, кто-то может помочь мне с этим.
Заранее спасибо.
- Откройте приложение Android из URL-адреса, не используя рабочий фильтр
- Является ли способ, с помощью которого быстро запускается протокол Firebase, считается безопасным?
- Цвет текста пункта меню «Действие»
- «Произошла внутренняя ошибка» с интеграцией входа в Google Plus
- Альтернативы PreferenceFragment с поддержкой android-v4
- Ошибка авторизации API Google Android v2
- Как я могу использовать MS Visual Studio для разработки Android?
- Добавление локальных файлов .aar в сборку Gradle с использованием «flatDirs» не работает
- getIntent () Дополнительно всегда NULL
- Рассчитать размер текста в соответствии с шириной области текста
- Холст Android Studio: рисование слишком большого растрового изображения
- Как я могу сериализовать свой class User для базы данных Firebase и исправить эту ошибку?
- Как обрабатывать изменение ориентации экрана, когда диалог выполнения и фоновый stream активны?
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 запустит соответствующие действия.