android करो - कैलेंडर के लिए साप्ताहिक ईवेंट जोड़ें




श्री संकल्प (4)

आपने कहा था कि गुरुवार को दोहराया हुआ दिखाया गया है, लेकिन मुझे जो मिला वह गुरुवार को शुरू हुआ, हर मंगलवार को दोहराने के साथ। इसलिए मुझे पूरा यकीन है कि RRULE भाग सही है।

मुझे लगता है कि आपको जो करना है उसे सही मिलीसेकंड प्राप्त करने के लिए कैलेंडर के साथ वास्तविक शुरुआत और समाप्ति समय सेट किया गया है, फिर "dtend" के बजाय "dtstart" और "endtime" के बजाय उपयोगकर्ता "शुरुआती समय"।

@Override
public void onClick(View v) {

    // If you want the start times to show up, you have to set them
    Calendar calendar = Calendar.getInstance();

    // Here we set a start time of Tuesday the 17th, 6pm
    calendar.set(2015, Calendar.MARCH, 17, 18, 0, 0);
    calendar.setTimeZone(TimeZone.getDefault());

    long start = calendar.getTimeInMillis();
    // add three hours in milliseconds to get end time of 9pm
    long end = calendar.getTimeInMillis() + 3 * 60 * 60 * 1000;

    Intent intent = new Intent(Intent.ACTION_INSERT)
            .setData(Events.CONTENT_URI)
            .setType("vnd.android.cursor.item/event")
            .putExtra(Events.TITLE, "Tuesdays")
            .putExtra(Events.DESCRIPTION, "Tuesday Specials")
            .putExtra(Events.EVENT_LOCATION, "Lixious Bench")
            .putExtra(Events.RRULE, "FREQ=WEEKLY;BYDAY=TU;UNTIL=20150428")

            // to specify start time use "beginTime" instead of "dtstart"
            //.putExtra(Events.DTSTART, calendar.getTimeInMillis())
            .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, start)
            .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, end)

            // if you want to go from 6pm to 9pm, don't specify all day
            //.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, true)
            .putExtra(CalendarContract.Events.HAS_ALARM, 1)
            .putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY);

    startActivity(intent);
 }

मैं एक घटना को देशी Calendar जोड़ना चाहूंगा, यहां तक ​​कि मैं इस घटना को 31 December 2015 तक प्रत्येक Tuesday को दोहराना चाहता हूं:

btnWeekly.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {       
        Calendar calendar = Calendar.getInstance(); 

        Intent intent = new Intent(Intent.ACTION_INSERT)
                .setData(Events.CONTENT_URI)
                .setType("vnd.android.cursor.item/event")
                .putExtra(Events.TITLE, "Tuesdays")
                .putExtra(Events.DESCRIPTION, "Tuesday Specials")
                .putExtra(Events.EVENT_LOCATION, "Lixious Bench")
                .putExtra(Events.RRULE, "FREQ=WEEKLY;BYDAY=Tu;UNTIL=20151231")
                .putExtra(Events.DTSTART, calendar.getTimeInMillis())
                .putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, true)
                .putExtra(CalendarContract.Events.HAS_ALARM, 1)
                .putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY);
        startActivity(intent);
    }                               
}

समस्या: कैलेंडर में यह प्रत्येक Thursday इस घटना को दिखा रहा है, जबकि मैंने अपने कोड में " tu " का इस्तेमाल किया है

और एक और बात यह है कि अगर मैं इस घटना के लिए समय की अवधि भी देना चाहता हूं तो: from 6:00 pm to 9:00 pm


यहां मैं आपको एक सरल कोड आशा साझा कर रहा हूं जो आपकी मदद करेगी या आपको मार्गदर्शन करेगी:

Intent intentAlarm = new Intent(getActivity(), AlarmReceiver.class);

intentAlarm.putExtra("name", data.getName());
intentAlarm.putExtra("desc", data.getDescription());
intentAlarm.setData(Uri.parse("custom://" + data.getId()));
intentAlarm.setAction(String.valueOf(data.getId()));

// Create the AlarmManager
AlarmManager alarmManager = (AlarmManager) getActivity()
        .getSystemService(Context.ALARM_SERVICE);

// Set the alarm for a particular time
alarmManager.set(AlarmManager.RTC_WAKEUP, Calendar_Object
        .getTimeInMillis(), PendingIntent.getBroadcast(
                    getActivity(), Integer.parseInt(data.getId()), intentAlarm,
                    PendingIntent.FLAG_UPDATE_CURRENT));

मंगलवार के लिए शुरुआती सभी पूंजी अर्थात् होना चाहिए। TU

.putExtra(CalendarContract.Events.RRULE, "FREQ=WEEKLY;BYDAY=TU;UNTIL=20151231")

आपको जोड़ने की आवश्यकता के लिए समय अवधि प्रदान करने के लिए

.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME,getMillis(begintime))
.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, getMillis(endtime))

आप यहाँ और यहां आवर्ती नियम के बारे में अधिक जानकारी प्राप्त कर सकते हैं


getMenuInflater() को getSupportMenuInflater() बदलने का प्रयास करें





android android-intent calendar android-calendar