2015-06-30 34 views
6

Hi Tôi có đoạn code sau để thêm các sự kiện trên lịch của tôi:sự kiện lịch Android không hiển thị

public String addCalendarEntry(CalendarDTO calendar) { 

     ContentValues event = new ContentValues(); 
     ContentResolver cr = getContentResolver(); 

     long startMillis = calendar.getStartDate().getTimeInMillis(); 
     long endMillis = calendar.getEndDate().getTimeInMillis(); 
     String timeZone = TimeZone.getDefault().getID(); 

     event.put(CalendarContract.Events.CALENDAR_ID, calendar.getId()); 
     event.put(CalendarContract.Events.TITLE, calendar.getTitle()); 
     event.put(CalendarContract.Events.DESCRIPTION, calendar.getDescription()); 
     event.put(CalendarContract.Events.EVENT_LOCATION, calendar.getLocation()); 
     event.put(CalendarContract.Events.DTSTART, startMillis); 
     event.put(CalendarContract.Events.DTEND, endMillis); 
     event.put(CalendarContract.Events.ALL_DAY, Boolean.getBoolean(String.valueOf(calendar.isAllDay()))); // 0 for false, 1 for true 
     event.put(CalendarContract.Events.HAS_ALARM, 1); // 0 for false, 1 for true 
     event.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone); 

     Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, event); 

     return uri.getLastPathSegment(); 
} 

Mã này đã làm việc tốt cho đến ngày khác, và tất cả của một đột ngột không thêm bất kỳ sự kiện hơn vào lịch của tôi. Nó cũng không có lỗi, vì vậy tôi thua lỗ ở đây.

CalendarDTO chỉ là một lớp vận chuyển dữ liệu như vậy:

public class CalendarDTO { 
    int id; 
    String title; 
    String description; 
    String location; 
    Calendar startDate; 
    Calendar endDate; 
    boolean isAllDay; 

// getters and setters removed for brevity 
} 

Bất kỳ manh mối đánh giá cao.

+0

kiểm tra câu trả lời của tôi không? – Gattsu

+0

Tôi đã làm, nhưng điều này không nhất thiết phải trả lời câu hỏi của tôi. Bạn chỉ đề xuất một giải pháp thay thế. I; m sẽ không downvote như bạn đã cố gắng để giúp đỡ, nhưng một thay thế không phải là câu trả lời, trừ khi bạn chắc chắn rằng phiên bản Android bị hỏng. –

+0

ok sir Tôi đã xóa câu trả lời của mình – Gattsu

Trả lời

5

Bạn có kiểm tra xem có lịch nào với calendar.getId() không?

Và từ các tài liệu: http://developer.android.com/reference/android/provider/CalendarContract.Events.html

Viết cho sự kiện Có những hạn chế hơn nữa trên tất cả các cập nhật và Phụ trang trong sự kiện bảng:

Nếu allDay được thiết lập để 1 eventTimezone phải TIMEZONE_UTC và thời gian phải tương ứng với ranh giới nửa đêm.

Hãy thử với một cái gì đó như thế này:

event.put(CalendarContract.Events.CALENDAR_ID, calendar.getId()); 
    event.put(CalendarContract.Events.TITLE, calendar.getTitle()); 
    event.put(CalendarContract.Events.DESCRIPTION, calendar.getDescription()); 
    event.put(CalendarContract.Events.EVENT_LOCATION, calendar.getLocation()); 
    if(calendar.isAllDay){ 
     Calendar start=calendar.getStartDate(); 
     start.set(Calendar.HOUR_OF_DAY, 0); 
     start.set(Calendar.MINUTE, 0); 
     start.set(Calendar.SECOND, 0); 
     start.set(Calendar.MILLISECOND, 0); 
     Calendar end=start; 
     end.add(Calendar.DAY_OF_MONTH,1); 
     event.put(CalendarContract.Events.DTSTART, start.getTimeInMillis()); 
     event.put(CalendarContract.Events.DTEND, end.getTimeInMillis()); 
     event.put(CalendarContract.Events.EVENT_TIMEZONE, Time.TIMEZONE_UTC); 
    }else{ 
     event.put(CalendarContract.Events.DTSTART, startMillis); 
     event.put(CalendarContract.Events.DTEND, endMillis); 
     event.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone); 
    } 
    event.put(CalendarContract.Events.HAS_ALARM, 1); 
    event.put(CalendarContract.Events.ALL_DAY, calendar.isAllDay()?1:0); 
+0

Tôi sẽ thử điều này và báo cáo lại, nhưng bạn có thể làm điều gì đó ở đây tôi nghĩ. Cảm ơn –

+0

@MarcosPlacona, nếu nó không giúp tôi biết và tôi sẽ xóa câu trả lời để bạn có thể nhận được câu trả lời tốt hơn – isma3l

+0

Bạn hoàn toàn đúng và tôi đã bỏ lỡ điều này trong tài liệu. Điều này hoàn toàn cứu thịt xông khói của tôi! Cảm ơn @ isma3l –

Các vấn đề liên quan