将事件插入到Android日历中

时间:2016-10-04 06:31:58

标签: android calendar

我使用此代码将事件插入到android中的日历中:

    private void insertEvent(int start, int end, String location, String comment, String title) {
    ContentValues values = new ContentValues();
    TimeZone tz = TimeZone.getDefault();

    values.put("calendar_id", 1);
    values.put("title", title);
    values.put("description",  comment);
    values.put("eventLocation", location);
    values.put("dtstart", start);
    values.put("dtend", end);
    values.put("allDay", 0);
    values.put("rrule", "FREQ=YEARLY");
    values.put("eventTimezone", tz.getID());

    Uri l_eventUri;
    if (android.os.Build.VERSION.SDK_INT <= 7) {
        // the old way
        l_eventUri = Uri.parse("content://calendar/events");
    } else {
        // the new way
        l_eventUri = Uri.parse("content://com.android.calendar/events");
    }
    Uri l_uri = getActivity().getContentResolver()
            .insert(l_eventUri, values);
}

这是另一个尝试:

private void insertEvent2(int start, int end, String location, String comment, String title){

    ContentResolver cr = getActivity().getContentResolver();
    ContentValues eventsArray = new ContentValues();
        ContentValues values = new ContentValues();
        TimeZone timeZone = TimeZone.getDefault();
        values.put(CalendarContract.Events.DTSTART,start);
        values.put(CalendarContract.Events.DTEND,end);
        values.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID());
        values.put(CalendarContract.Events.TITLE, title);
        values.put(CalendarContract.Events.DESCRIPTION, title);
        values.put(CalendarContract.Events.EVENT_LOCATION,location);
        values.put(CalendarContract.Events.CALENDAR_ID, 1);
        if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
            // TODO: Consider calling
            //    ActivityCompat#requestPermissions
            // here to request the missing permissions, and then overriding
            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
            //                                          int[] grantResults)
            // to handle the case where the user grants the permission. See the documentation
            // for ActivityCompat#requestPermissions for more details.
            return;
        }
        eventsArray = values;
    Uri l_uri = getActivity().getContentResolver()
            .insert(CalendarContract.Events.CONTENT_URI, values);
}

但是当我看到默认的Android日历时,我无法看到我创建的事件。您知道我应该如何插入活动吗?

1 个答案:

答案 0 :(得分:0)

使用联系人解析程序在日历上添加活动

ContentResolver cr = Env.currentActivity.getContentResolver();
                    ContentValues[] eventsArray = new ContentValues[projectDataList.size()];
                    for (int i = 0; i < projectDataList.size(); i++) {
                        projectDetailData = projectDataList.get(i);
                        ContentValues values = new ContentValues();
                        TimeZone timeZone = TimeZone.getDefault();
                        values.put(CalendarContract.Events.DTSTART, (long) (Util.dateToMiliSec(shift_start_date) + (Util.convertTimeIntoSecound(projectDetailData.shift_start_time, "HH:mm:ss") * 1000)));
                        values.put(CalendarContract.Events.DTEND, (long) (Util.dateToMiliSec(shift_end_date) + (Util.convertTimeIntoSecound(projectDetailData.shift_end_time, "HH:mm:ss") * 1000)));
                        values.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID());
                        values.put(CalendarContract.Events.TITLE, title);
                        values.put(CalendarContract.Events.DESCRIPTION, title);
                        values.put(Events.EVENT_LOCATION, work_location);
                        values.put(CalendarContract.Events.CALENDAR_ID, 1);
                        if (ActivityCompat.checkSelfPermission(Env.currentActivity, Manifest.permission.WRITE_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
                            // TODO: Consider calling
                            //    ActivityCompat#requestPermissions
                            // here to request the missing permissions, and then overriding
                            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                            //                                          int[] grantResults)
                            // to handle the case where the user grants the permission. See the documentation
                            // for ActivityCompat#requestPermissions for more details.
                            return;
                        }
                        eventsArray[i] = values;
                    }
                    int a = cr.bulkInsert(CalendarContract.Events.CONTENT_URI, eventsArray);