CalendarView到设备日历链接

时间:2015-11-13 22:47:05

标签: android calendar

我有一个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是什么?谢谢。

1 个答案:

答案 0 :(得分:0)

我终于明白了。两件事。

  1. 我正在向我的URI追加“时间”。这将只打开日历,直到我在启动意图时指定的特定时间。为了打开特定日期的事件屏幕,我需要添加“事件”。

  2. 当我创建意图时,我使用了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);
    
    }});