Custom calendar dayview in android

前端 未结 3 1881
小蘑菇
小蘑菇 2020-12-13 03:13

I want to develop a custom calendar day view for android OS 1.5 and later on.

Similar to android day calendar and event add & display in day view.

If you

3条回答
  •  离开以前
    2020-12-13 04:10

    you can use google calendar in order to display your new calendar and over here you can create your own events. Below is the class for creating a new calendar.

    public class CalendarMapper {
        private static final String ACCOUNT_NAME = "private";
        private static final String INT_NAME_PREFIX = "priv";
    
        @SuppressLint("NewApi")
        private static Uri buildCalUri() {
            return CalendarContract.Calendars.CONTENT_URI
                    .buildUpon()
                    .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
                    .appendQueryParameter(Calendars.ACCOUNT_NAME, ACCOUNT_NAME)
                    .appendQueryParameter(Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL)
                    .build();
        }
    
        private static ContentValues buildContentValues(Calendar calendar) {
            String dispName = "TUM3";  //Calendar.getName() returns a String
            String intName = INT_NAME_PREFIX + dispName;
            final ContentValues cv = new ContentValues();
            cv.put(Calendars.ACCOUNT_NAME, ACCOUNT_NAME);
            cv.put(Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL);
            cv.put(Calendars.NAME, intName);
            cv.put(Calendars.CALENDAR_DISPLAY_NAME, dispName);
            //cv.put(Calendars.CALENDAR_COLOR, calendar.getColor());  //Calendar.getColor() returns int
            cv.put(Calendars.CALENDAR_ACCESS_LEVEL, Calendars.CAL_ACCESS_OWNER);
            cv.put(Calendars.OWNER_ACCOUNT, ACCOUNT_NAME);
            cv.put(Calendars.VISIBLE, 1);
            cv.put(Calendars.SYNC_EVENTS, 1);
    
            return cv;
        }
    
        @SuppressWarnings("deprecation")
        public static Uri addCalendar(Calendar calendar, ContentResolver cr) {
            if (calendar == null)
                throw new IllegalArgumentException();
    
            final ContentValues cv = buildContentValues(calendar);
            Uri calUri = buildCalUri();
            Uri cancelUri=cr.insert(calUri, cv);
            return cancelUri;
        }
    
    }
    

    In the main activity you can call add calendar to create a calendar and add an event into this calendar.

    Uri cancelUri;
     @SuppressLint("NewApi")
        public void displayCal(View view){
               ContentResolver crv = getContentResolver();
    
               Calendar calendar = Calendar.getInstance();
               cancelUri= CalendarMapper.addCalendar(calendar, crv);
    
               long calID=2; //ID of the newly created calendar. You can query the calendars table to get the ID of your calendar
               long endMillis = 10100;     
               Calendar beginTime = Calendar.getInstance();
               beginTime.set(2012, 9, 14, 7, 30);
               long startMillis = beginTime.getTimeInMillis();
               Calendar endTime = Calendar.getInstance();
               endTime.set(2012, 9, 14, 8, 45);
               endMillis = endTime.getTimeInMillis();
    
               ContentResolver cr = getContentResolver();
               ContentValues values2 = new ContentValues();
               values2.put(Events.DTSTART, startMillis);
               values2.put(Events.DTEND, endMillis);
               values2.put(Events.TITLE, "Jazzercise");
               values2.put(Events.DESCRIPTION, "Group workout");
               values2.put(Events.CALENDAR_ID, calID);
    
               values2.put(Events.EVENT_TIMEZONE, "America/Los_Angeles");
               Uri uri = cr.insert(Events.CONTENT_URI, values2);
    
               Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
               builder.appendPath("time");
    
               ContentUris.appendId(builder, startMillis);
               Intent intent = new Intent(Intent.ACTION_VIEW)
                   .setData(builder.build());
               startActivity(intent);
        }
    

    In order to delete this calendar, you can do it like below

    public void delCal(View view){
             ContentResolver crv = getContentResolver();
             crv.delete(cancelUri, null, null);
        }
    

提交回复
热议问题