2012-11-30 39 views
7

Tôi có một ứng dụng Android tải xuống với dịch vụ một số thông tin về thuốc.Tạo sự kiện lặp lại với lời nhắc cho đến ngày cụ thể mà không có Intent trong Android?

Ví dụ: (fludex white round 2 24-02-2012), có nghĩa là một loại thuốc có tên fludex, màu trắng và tròn, phải được cung cấp 2 lần mỗi ngày từ hôm nay cho đến 24-01-2012.

Bây giờ tôi muốn sau khi tải xuống thông tin thuốc, để thêm sự kiện lặp lại với thông tin thuốc vào lịch âm thầm/lập trình (không có tương tác của người dùng). Vì vậy, từ hôm nay đến 24-01-2012 mỗi 10 giờ sáng và 10 giờ tối để có lời nhắc 10 phút trước khi dùng thuốc của mình. Ứng dụng của tôi sẽ dành cho android 2-4. Làm thế nào tôi có thể làm điều đó, tôi đang bối rối từ tìm kiếm của tôi cho đến nay.

Câu hỏi thứ hai: Tôi chỉ có thể xóa các sự kiện (và lời nhắc của họ) được thực hiện từ ứng dụng của tôi, vì vậy khi tôi đồng bộ hóa liệu pháp thuốc của mình để xóa tất cả các sự kiện trước đó và tạo sự kiện mới dựa trên liệu pháp thuốc mới tôi nhận được từ dịch vụ?

+0

xem xét vấn đề này: http://stackoverflow.com/questions/28871921/add-weekly-event-to-calendar – Sun

Trả lời

14
 ContentResolver cr = ctx.getContentResolver(); 
     ContentValues values = new ContentValues(); 

     values.put(CalendarContract.Events.DTSTART, dtstart); 
     values.put(CalendarContract.Events.TITLE, title); 
     values.put(CalendarContract.Events.DESCRIPTION, comment); 

     TimeZone timeZone = TimeZone.getDefault(); 
     values.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID()); 

     // default calendar 
     values.put(CalendarContract.Events.CALENDAR_ID, 1); 

     values.put(CalendarContract.Events.RRULE, "FREQ=DAILY;UNTIL=" 
       + dtUntill); 
     //for one hour 
     values.put(CalendarContract.Events.DURATION, "+P1H"); 

     values.put(CalendarContract.Events.HAS_ALARM, 1); 

     // insert event to calendar 
     Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values); 

nơi dtuntil là

SimpleDateFormat yyyymmdd = new SimpleDateFormat("yyyymmdd"); 
    Calendar dt = Calendar.getInstance(); 

    //where untilDate is a date instance of your choice,for example 30/01/2012 
    dt.setTime(untilDate); 

    //if you want the event until 30/01/2012 we add one day from our day because UNTIL in RRule sets events Before the last day want for event 
    dt.add(Calendar.DATE, 1); 
    String dtUntill = yyyymmdd.format(dt.getTime()); 

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

    // get the event ID that is the last element in the Uri 
    long eventID = Long.parseLong(uri.getLastPathSegment()); 

    // add 10 minute reminder for the event 
    ContentValues reminders = new ContentValues(); 
    reminders.put(Reminders.EVENT_ID, eventID); 
    reminders.put(Reminders.METHOD, Reminders.METHOD_ALERT); 
    reminders.put(Reminders.MINUTES, 10); 

    Uri uri = cr.insert(Reminders.CONTENT_URI, reminders); 

Tham khảo: Recurrence Rule

+0

+1 để biết câu trả lời chi tiết –

+0

ctx ở đây là gì? – Manikandan

+0

Chúng tôi có cần cung cấp bất kỳ sự cho phép nào trong tệp kê khai không? – Manikandan

2

Dưới đây là một số tốt Example về những gì bạn muốn.

Cập nhật để biết thêm thông tin về lịch và nhắc nhở thực hiện hoặc các công cụ khác see this

Bạn cũng có thể nhận được sự giúp đỡ từ các mã sau

Intent intent = new Intent(Intent.ACTION_EDIT); 
intent.setType("vnd.android.cursor.item/event"); 
intent.putExtra("beginTime", date); 
intent.putExtra("allDay", true); 
intent.putExtra("rrule", "FREQ=YEARLY"); //To set the repeat rule 
intent.putExtra("endTime", date); 
intent.putExtra("title", summary); 
+0

Điều này tạo/đặt lời nhắc/báo thức vào một ngày nhất định.But tôi muốn thực hiện lặp lại này trong N ngày kể từ bây giờ. Và tôi cũng muốn chèn các sự kiện vào lịch, để người dùng có thể xem chúng. – oikonomopo

+0

chúng ta có thể đặt thời gian bằng cách sử dụng putExtra ie intent.putExtra ("duration", custom time); – Ali

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