我有一个CalendarView。按下日期后,应用程序会在单击的特定日期打开设备的日历:
calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
cal = Calendar.getInstance();
cal.set(year,month,dayOfMonth);
long epochMillis = cal.getTimeInMillis();
Uri.Builder uriBuilder = CalendarContract.CONTENT_URI.buildUpon();
uriBuilder.appendPath("time");
ContentUris.appendId(uriBuilder, epochMillis);
Uri uri = uriBuilder.build();
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(uri);
startActivity(i);
}
});
这很好用。我的问题是,有没有办法让用户进入"创建事件屏幕"而不是它目前带我的地方,这是整个月的视图,所选日期突出显示?我希望他们能够点击我的CalendarView中的日期,然后转到设备日历上的一个屏幕,让他们在所选日期添加约会。想知道是否有人知道该屏幕的uri是什么?谢谢。
答案 0 :(得分:0)
我终于明白了。两件事。
我正在向我的URI追加“时间”。这将只打开日历,直到我在启动意图时指定的特定时间。为了打开特定日期的事件屏幕,我需要添加“事件”。
当我创建意图时,我使用了ACTION_VIEW。相反,我需要ACTION_INSERT。然后我使用我的新URI设置Intent的数据,其中包括“events”,然后指定一个开始时间,这是我想要的特定日期:
calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
cal = Calendar.getInstance();
cal.set(year,month,dayOfMonth);
long epochMillis = cal.getTimeInMillis();
Uri.Builder uriBuilder = CalendarContract.CONTENT_URI.buildUpon();
uriBuilder.appendPath("events");
Uri uri = uriBuilder.build();
Intent i = new Intent(Intent.ACTION_INSERT);
i.setData(uri);
i.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, epochMillis);
startActivity(i);
}});