Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

एंड्रॉइड ऐप में कैलेंडर इवेंट कैसे जोड़ें

इंटेंट के माध्यम से सिस्टम कैलेंडर ऐप में इवेंट जोड़ना

एंड्रॉइड में कैलेंडर इवेंट जोड़ने का सबसे सरल तरीका Intent.ACTION_INSERT या Intent.ACTION_EDIT का उपयोग करके सिस्टम कैलेंडर ऐप को लॉन्च करना है। यह यूजर को इवेंट विवरण संपादित/पुष्टि करने देता है और किसी विशेष अनुमति की आवश्यकता नहीं होती।

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio में प्रोजेक्ट बनाएं।

चरण 2: लेआउट फ़ाइल

res/layout/activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="कैलेंडर इवेंट जोड़ने का डेमो"
        android:textSize="18sp"
        android:textStyle="bold" />

    <Button
        android:id="@+id/btnAddEvent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/textView"
        android:layout_marginTop="24dp"
        android:onClick="addCalendarEvent"
        android:text="कैलेंडर इवेंट जोड़ें" />

</RelativeLayout>

चरण 3: MainActivity में इवेंट जोड़ने का लॉजिक

package com.app.sample;

import android.content.Intent;
import android.os.Bundle;
import android.provider.CalendarContract;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Calendar;
import java.util.TimeZone;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void addCalendarEvent(View view) {
        // वर्तमान समय से शुरू होने वाला इवेंट
        Calendar beginTime = Calendar.getInstance();
        Calendar endTime = Calendar.getInstance();
        endTime.add(Calendar.HOUR, 1); // 1 घंटे बाद समाप्त

        // इंटेंट बनाएं
        Intent intent = new Intent(Intent.ACTION_INSERT)
                .setData(CalendarContract.Events.CONTENT_URI)
                .putExtra(CalendarContract.Events.TITLE, "टीम मीटिंग")
                .putExtra(CalendarContract.Events.DESCRIPTION, "साप्ताहिक प्रोजेक्ट अपडेट मीटिंग")
                .putExtra(CalendarContract.Events.EVENT_LOCATION, "कॉन्फ्रेंस रूम A / Google Meet")
                .putExtra(CalendarContract.Events.DTSTART, beginTime.getTimeInMillis())
                .putExtra(CalendarContract.Events.DTEND, endTime.getTimeInMillis())
                .putExtra(CalendarContract.Events.ALL_DAY, false)
                .putExtra(CalendarContract.Events.HAS_ALARM, true)
                .putExtra(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getID())
                .putExtra(CalendarContract.Events.AVAILABILITY, CalendarContract.Events.AVAILABILITY_BUSY)
                // रिकरेंस नियम (वैकल्पिक) - साप्ताहिक
                .putExtra(CalendarContract.Events.RRULE, "FREQ=WEEKLY;BYDAY=MO;COUNT=10");

        // कैलेंडर ऐप लॉन्च करें
        if (intent.resolveActivity(getPackageManager()) != null) {
            startActivity(intent);
        } else {
            // फॉलबैक: कोई कैलेंडर ऐप नहीं मिला
            android.widget.Toast.makeText(this, "कोई कैलेंडर ऐप नहीं मिला", android.widget.Toast.LENGTH_SHORT).show();
        }
    }
}

मुख्य CalendarContract एक्स्ट्रा

एक्स्ट्रा कुंजीविवरणउदाहरण
Events.TITLEइवेंट शीर्षक"मीटिंग"
Events.DESCRIPTIONविवरण"प्रोजेक्ट चर्चा"
Events.DTSTARTशुरुआत समय (मिलीसेकंड)calendar.getTimeInMillis()
Events.DTENDसमाप्ति समयcalendar.getTimeInMillis()
Events.ALL_DAYपूरे दिन का इवेंटtrue/false
Events.EVENT_LOCATIONस्थान"ऑफिस/ऑनलाइन"
Events.RRULEरिकरेंस नियम (RFC 5545)"FREQ=WEEKLY;COUNT=10"
Events.HAS_ALARMरिमाइंडर सक्षम करेंtrue
Events.AVAILABILITYव्यस्त/मुक्त स्थितिAVAILABILITY_BUSY

एडवांस्ड: रिमाइंडर (अलार्म) जोड़ना

इवेंट डालने के बाद प्रोग्रामेटिकली रिमाइंडर जोड़ें:

// पहले इवेंट इन्सर्ट करें (ContentResolver के माध्यम से)
ContentValues values = new ContentValues();
values.put(CalendarContract.Events.TITLE, "मीटिंग");
values.put(CalendarContract.Events.DTSTART, beginTime.getTimeInMillis());
values.put(CalendarContract.Events.DTEND, endTime.getTimeInMillis());
// ... अन्य फील्ड्स

Uri eventUri = getContentResolver().insert(CalendarContract.Events.CONTENT_URI, values);
long eventId = Long.parseLong(eventUri.getLastPathSegment());

// फिर रिमाइंडर जोड़ें (10 मिनट पहले)
ContentValues reminderValues = new ContentValues();
reminderValues.put(CalendarContract.Reminders.EVENT_ID, eventId);
reminderValues.put(CalendarContract.Reminders.MINUTES, 10);
reminderValues.put(CalendarContract.Reminders.METHOD, CalendarContract.Reminders.METHOD_ALERT);
getContentResolver().insert(CalendarContract.Reminders.CONTENT_URI, reminderValues);

आवश्यक अनुमतियां (डायरेक्ट इन्सर्ट के लिए)

AndroidManifest.xml:

<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
महत्वपूर्ण: इंटेंट विधि (ACTION_INSERT) के लिए कोई अनुमति आवश्यक नहीं - यूजर स्वयं कैलेंडर ऐप में इवेंट पुष्टि करता है। डायरेक्ट ContentResolver इन्सर्ट के लिए READ/WRITE_CALENDAR अनुमतियाँ चाहिए।

चरण 4: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.app.sample">

    <!-- इंटेंट विधि के लिए कोई अनुमति नहीं चाहिए -->

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.AppCompat.Light">

        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

रिकरेंस नियम (RRULE) उदाहरण

  • FREQ=DAILY;COUNT=5 - 5 दिन दैनिक
  • FREQ=WEEKLY;BYDAY=MO,WE,FR - सोम, बुध, शुक्र साप्ताहिक
  • FREQ=MONTHLY;BYMONTHDAY=15 - हर महीने की 15 तारीख
  • FREQ=YEARLY - वार्षिक (जन्मदिन, वर्षगांठ)
नोट: यूजर के डिवाइस पर एक से अधिक कैलेंडर ऐप्स हो सकते हैं। इंटेंट एक चॉइस डायलॉग दिखाएगा। यदि आप डिफ़ॉल्ट कैलेंडर जानते हैं, तो intent.putExtra("calendar_id", selectedCalendarId) का उपयोग कर सकते हैं।
  1. Facebook पर Android ऐप कैसे बनाएं? Facebook पर Android ऐप कैसे बनाएं?

    Facebook Developer Console पर ऐप बनाकर App ID प्राप्त करने की चरण-दर-चरण प्रक्रिया। चरण 1: Facebook Developer Console पर ऐप बनाएं developers.facebook.com पर जाएं My Apps → Create App चुनें ऐप नाम और ईमेल दर्ज करें Create App ID पर क्लिक करें चरण 2: Android Studio में SDK जोड़ें प्रोजेक्ट-लेवल bu

  1. Android में PreferenceScreen पर बटन कैसे जोड़ें? Android में PreferenceScreen पर बटन कैसे जोड़ें?

    AndroidX Preference लाइब्रेरी का उपयोग करके सेटिंग्स स्क्रीन में कस्टम एक्शन बटन जोड़ने का तरीका। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में नया प्रोजेक्ट बनाएं। चरण 2: एक्टिविटी लेआउट res/layout/activity_main.xml - Fragment कंटेनर: <LinearLayout xmlns:android=https://schemas.android.com/apk

  1. Android Studio में JAR फ़ाइल को लाइब्रेरी के रूप में कैसे जोड़ें? Android Studio में JAR फ़ाइल को लाइब्रेरी के रूप में कैसे जोड़ें?

    यह गाइड बताता है कि Android Studio प्रोजेक्ट में बाहरी JAR फ़ाइल को लाइब्रेरी के रूप में कैसे जोड़ा जाता है। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project पर जाएं और प्रोजेक्ट बनाएं। चरण 2: JAR फ़ाइल को libs फ़ोल्डर में कॉपी करें Project व्यू में app/libs फ़ोल्डर खोलें (नहीं है