How to remove a participant from a Calendar, Android event?

I want to update the calendar event.

I know how to update the title, location, add a new member using ContentResolver

But I have no idea how to remove some members, for example, by email.

This is what I still have, I parse JSONObjectand extract all the new information:

public void updateEvent(Context context, long eventId, JSONObject updateObj) {
        ContentResolver cr = context.getContentResolver();
        ContentValues values = new ContentValues();
        Uri updateUri = null;

        long startDate = updateObj.optLong("startDate");
        long endDate = updateObj.optLong("endDate");
        String title = updateObj.optString("title");
        String description = updateObj.optString("description");
        String location = updateObj.optString("location");
        int eventStatus = updateObj.optInt("eventStatus");
        JSONArray addAtt = updateObj.optJSONArray("add_attendee");
        JSONArray deleteAtt = updateObj.optJSONArray("delete_attendee");

        values.put(Events.EVENT_LOCATION, location);
        values.put(Events.DESCRIPTION, title);
        values.put(Events.TITLE, title);
        values.put(Events.DTSTART, startDate);
        values.put(Events.DTEND, endDate);
        values.put(Events.STATUS, eventStatus);

        updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventId);
        int rows = cr.update(updateUri, values, null, null);
        Log.i(TAG, "Rows updated: " + rows);  

        // add new attendees
        for(int i=0; i<addAtt.length(); i++){           

            JSONObject attObj = addAtt.optJSONObject(i);

            String name = attObj.optString("name");
            String email = attObj.optString("email");           
            int relationship = attObj.optInt("relationship");
            int type = attObj.optInt("type");
            int status = attObj.optInt("status");

            values = new ContentValues();
            values.put(Attendees.ATTENDEE_NAME, name);
            values.put(Attendees.ATTENDEE_EMAIL, email);
            values.put(Attendees.ATTENDEE_RELATIONSHIP, relationship); // had 0
            values.put(Attendees.ATTENDEE_TYPE, type);// had 0
            values.put(Attendees.ATTENDEE_STATUS, status); // had 3 - invited
            values.put(Attendees.EVENT_ID, eventId);
            updateUri = ContentUris.withAppendedId(Attendees.CONTENT_URI, eventId);
            cr.update(updateUri, values, null, null);
        }

        // remove attendees
        for(int i=0; i<removeAtt.length(); i++){            

            JSONObject attObj = addAtt.optJSONObject(i);

                    // HERE  iS A PROBLEM

//          Uri deleteUri = ContentUris.withAppendedId(Attendees.CONTENT_URI, eventId);
//          int rows = cr.delete(deleteUri, null, null);
        }
    }

[EDIT]

I also tried:

String selection = Attendees.ATTENDEE_EMAIL + " = ?";
String[] selectionArgs = new String[] {"burkaApostol@gmail.com"};

Uri deleteUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventId);
rows = cr.delete(deleteUri, selection, selectionArgs);

get error:

java.lang.IllegalArgumentException: Selection not permitted for content://com.android.calendar/events/524

Please, help,

+4
source share
2 answers

To delete a specific participant by email and event ID use:

    String selection = "(" + Attendees.EVENT_ID + " = ?) AND (" + Attendees.ATTENDEE_EMAIL + " = ?)";
    String[] selectionArgs = new String[] {eventId+"","burkaapostol@gmail.com"};

    rows = cr.delete(Attendees.CONTENT_URI, selection, selectionArgs);
    Log.i(TAG, "Rows updated: " + rows);  
+2
source

delete ( , ).


, Attendees.CONTENT_URI ?

http://developer.android.com/guide/topics/providers/calendar-provider.html#attendees

String emailAddress = ...;
cr.delete(Attendees.URI, Attendees.ATTENDEE_EMAIL + "=" + emailAddress, null);
-1

All Articles