उनल Android में कैलेंडर ईवेंट कैसे जोड़ें?




हिन्दू कैलेंडर (7)

मैं उपयोगकर्ता के कैलेंडर में प्रोग्रामेटिक रूप से एक ईवेंट कैसे जोड़ूं?

कौन सा कैलेंडर?

क्या कोई आम एपीआई है जो वे सभी साझा करते हैं?

नहीं, विंडोज कैलेंडर ऐप्स के लिए "सामान्य एपीआई वे सभी साझा" होने से कहीं अधिक नहीं है। कुछ सामान्य डेटा प्रारूप (उदाहरण के लिए, iCalendar) और इंटरनेट प्रोटोकॉल (उदाहरण के लिए, CalDAV) हैं, लेकिन कोई सामान्य API नहीं है। कुछ कैलेंडर ऐप्स एपीआई भी नहीं देते हैं।

यदि विशिष्ट कैलेंडर एप्लिकेशन हैं जिनके साथ आप एकीकृत करना चाहते हैं, तो अपने डेवलपर्स से संपर्क करें और यह निर्धारित करें कि वे एक एपीआई प्रदान करते हैं या नहीं। इसलिए, उदाहरण के लिए, एंड्रॉइड ओपन सोर्स प्रोजेक्ट से कैलेंडर एप्लिकेशन, जो मायारा उद्धरण देता है, कोई दस्तावेज और समर्थित एपीआई प्रदान करता है। Google ने स्पष्ट रूप से डेवलपर्स को बताया कि ट्यूटोरियल माया साइट्स में उल्लिखित तकनीकों का उपयोग न करें

प्रश्न में इंटरनेट कैलेंडर में ईवेंट जोड़ने के लिए एक और विकल्प है। उदाहरण के लिए, एंड्रॉइड ओपन सोर्स प्रोजेक्ट से कैलेंडर एप्लिकेशन में ईवेंट जोड़ने का सबसे अच्छा तरीका यह है कि उचित GData API के माध्यम से ईवेंट को उपयोगकर्ता के Google कैलेंडर में जोड़ना है।

अद्यतन करें

एंड्रॉइड 4.0 (एपीआई लेवल 14) ने CalendarContract ContentProvider जोड़ा।

https://code.i-harness.com

मैं बस एंड्रॉइड पर तेज़ी से बढ़ रहा हूं, और आज एक प्रोजेक्ट मीटिंग में किसी ने कहा कि एंड्रॉइड के पास कोई मूल कैलेंडर ऐप नहीं है, इसलिए उपयोगकर्ता बस जो भी कैलेंडर ऐप पसंद करते हैं उसका उपयोग करते हैं।

क्या यह सच है, और यदि ऐसा है तो मैं प्रोग्राम के रूप में उपयोगकर्ता के कैलेंडर में कोई ईवेंट कैसे जोड़ूं? क्या कोई आम एपीआई है जो वे सभी साझा करते हैं?

इसके लायक होने के लिए, हम शायद एंड्रॉइड 2.x को लक्षित कर रहे हैं।


Google कैलेंडर "मूल" कैलेंडर ऐप है। जहां तक ​​मुझे पता है, सभी फोन इसके संस्करण के साथ आते हैं, और डिफ़ॉल्ट एसडीके एक संस्करण प्रदान करता है।

आप इसके साथ काम करने के लिए इस tutorial को देख सकते हैं।


इस एपीआई को अपने कोड में प्रयोग करें .. यह आपको ईवेंट सम्मिलित करने में मदद करेगा, अनुस्मारक के साथ ईवेंट और मीटिंग के साथ ईवेंट सक्षम किया जा सकता है ... यह एपीआई प्लेटफ़ॉर्म 2.1 और उसके बाद के संस्करणों के लिए काम करता है जो सामग्री के बजाय 2.1 का उपयोग करते हैं: // com .android.calendar / घटनाएं सामग्री का उपयोग करें: // कैलेंडर / घटनाएं

 public static long pushAppointmentsToCalender(Activity curActivity, String title, String addInfo, String place, int status, long startDate, boolean needReminder, boolean needMailService) {
    /***************** Event: note(without alert) *******************/

    String eventUriString = "content://com.android.calendar/events";
    ContentValues eventValues = new ContentValues();

    eventValues.put("calendar_id", 1); // id, We need to choose from
                                        // our mobile for primary
                                        // its 1
    eventValues.put("title", title);
    eventValues.put("description", addInfo);
    eventValues.put("eventLocation", place);

    long endDate = startDate + 1000 * 60 * 60; // For next 1hr

    eventValues.put("dtstart", startDate);
    eventValues.put("dtend", endDate);

    // values.put("allDay", 1); //If it is bithday alarm or such
    // kind (which should remind me for whole day) 0 for false, 1
    // for true
    eventValues.put("eventStatus", status); // This information is
    // sufficient for most
    // entries tentative (0),
    // confirmed (1) or canceled
    // (2):
    eventValues.put("eventTimezone", "UTC/GMT +2:00");
   /*Comment below visibility and transparency  column to avoid java.lang.IllegalArgumentException column visibility is invalid error */

    /*eventValues.put("visibility", 3); // visibility to default (0),
                                        // confidential (1), private
                                        // (2), or public (3):
    eventValues.put("transparency", 0); // You can control whether
                                        // an event consumes time
                                        // opaque (0) or transparent
                                        // (1).
      */
    eventValues.put("hasAlarm", 1); // 0 for false, 1 for true

    Uri eventUri = curActivity.getApplicationContext().getContentResolver().insert(Uri.parse(eventUriString), eventValues);
    long eventID = Long.parseLong(eventUri.getLastPathSegment());

    if (needReminder) {
        /***************** Event: Reminder(with alert) Adding reminder to event *******************/

        String reminderUriString = "content://com.android.calendar/reminders";

        ContentValues reminderValues = new ContentValues();

        reminderValues.put("event_id", eventID);
        reminderValues.put("minutes", 5); // Default value of the
                                            // system. Minutes is a
                                            // integer
        reminderValues.put("method", 1); // Alert Methods: Default(0),
                                            // Alert(1), Email(2),
                                            // SMS(3)

        Uri reminderUri = curActivity.getApplicationContext().getContentResolver().insert(Uri.parse(reminderUriString), reminderValues);
    }

    /***************** Event: Meeting(without alert) Adding Attendies to the meeting *******************/

    if (needMailService) {
        String attendeuesesUriString = "content://com.android.calendar/attendees";

        /********
         * To add multiple attendees need to insert ContentValues multiple
         * times
         ***********/
        ContentValues attendeesValues = new ContentValues();

        attendeesValues.put("event_id", eventID);
        attendeesValues.put("attendeeName", "xxxxx"); // Attendees name
        attendeesValues.put("attendeeEmail", "[email protected]");// Attendee
                                                                            // E
                                                                            // mail
                                                                            // id
        attendeesValues.put("attendeeRelationship", 0); // Relationship_Attendee(1),
                                                        // Relationship_None(0),
                                                        // Organizer(2),
                                                        // Performer(3),
                                                        // Speaker(4)
        attendeesValues.put("attendeeType", 0); // None(0), Optional(1),
                                                // Required(2), Resource(3)
        attendeesValues.put("attendeeStatus", 0); // NOne(0), Accepted(1),
                                                    // Decline(2),
                                                    // Invited(3),
                                                    // Tentative(4)

        Uri attendeuesesUri = curActivity.getApplicationContext().getContentResolver().insert(Uri.parse(attendeuesesUriString), attendeesValues);
    }

    return eventID;

}

इसे अपने कोड में आज़माएं:

Calendar cal = Calendar.getInstance();              
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra("beginTime", cal.getTimeInMillis());
intent.putExtra("allDay", true);
intent.putExtra("rrule", "FREQ=YEARLY");
intent.putExtra("endTime", cal.getTimeInMillis()+60*60*1000);
intent.putExtra("title", "A Test Event from android app");
startActivity(intent);

अनुमति जोड़ें ..

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"...>
    <uses-sdk android:minSdkVersion="14" />
    <uses-permission android:name="android.permission.READ_CALENDAR" />
    <uses-permission android:name="android.permission.WRITE_CALENDAR" />
    ...
</manifest>


बस अगर किसी को Xamarin के लिए c # में इसकी आवश्यकता है:

        Intent intent = new Intent(Intent.ActionInsert);
        intent.SetData(Android.Provider.CalendarContract.Events.ContentUri);
        intent.PutExtra(Android.Provider.CalendarContract.ExtraEventBeginTime, Utils.Tools.CurrentTimeMillis(game.Date));
        intent.PutExtra(Android.Provider.CalendarContract.EventsColumns.AllDay, false);
        intent.PutExtra(Android.Provider.CalendarContract.EventsColumns.EventLocation, "Location");
        intent.PutExtra(Android.Provider.CalendarContract.EventsColumns.Description, "Description");
        intent.PutExtra(Android.Provider.CalendarContract.ExtraEventEndTime, Utils.Tools.CurrentTimeMillis(game.Date.AddHours(2)));
        intent.PutExtra(Android.Provider.CalendarContract.EventsColumns.Title, "Title");
        StartActivity(intent);

सहायक कार्य:

    private static readonly DateTime Jan1st1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

    public static long CurrentTimeMillis(DateTime date)
    {
        return (long)(date.ToUniversalTime() - Jan1st1970).TotalMilliseconds;
    }

यदि आपके पास तिथि और समय के साथ दी गई दिनांक स्ट्रिंग है।

उदाहरण के लिए String givenDateString = pojoModel.getDate()/* Format dd-MMM-yyyy hh:mm:ss */

कैलेंडर में दिनांक और समय के साथ एक ईवेंट जोड़ने के लिए निम्न कोड का उपयोग करें

Calendar cal = Calendar.getInstance();
cal.setTime(new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss").parse(givenDateString));
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra("beginTime", cal.getTimeInMillis());
intent.putExtra("allDay", false);
intent.putExtra("rrule", "FREQ=YEARLY");
intent.putExtra("endTime",cal.getTimeInMillis() + 60 * 60 * 1000);
intent.putExtra("title", " Test Title");
startActivity(intent);






calendar