当前位置: 首页 > 面试题库 >

如何删除日历中的特定事件

邬英武
2023-03-14
问题内容

我想做的只是删除我在日历中保存的内容,而不是删除日历中已经存在的所有内容。为此,我使用以下代码。但是它将删除日历的所有内容。那么谁能告诉我如何预防呢?

Uri CALENDAR_URI = Uri.parse("content://calendar/events");
ContentResolver cr = getContentResolver();
cr.delete(CALENDAR_URI, null, null); // Delete all



ContentValues values = new ContentValues();
values.put("calendar_id", 1);
values.put("title", this.title);
values.put("allDay", this.allDay);
values.put("dtstart", this.dtstart.toMillis(false));
values.put("dtend", this.dtend.toMillis(false));
values.put("description", this.description);
values.put("eventLocation", this.eventLocation);
values.put("visibility", this.visibility);
values.put("hasAlarm", this.hasAlarm);

cr.insert(CALENDAR_URI, values);

因此,我要删除的仅是我输入的条目。

删除活动

Uri EVENTS_URI = Uri.parse("content://com.android.calendar/" + "events");

ContentResolver cr = c.getContentResolver();
deleteEvent(cr, EVENTS_URI, 1);

private void deleteEvent(ContentResolver resolver, Uri eventsUri, int calendarId) {
        Cursor cursor;     
        cursor = resolver.query(eventsUri, new String[]{ "_id" },     "calendar_id=" + calendarId, null, null);
        while(cursor.moveToNext()) {
            long eventId = cursor.getLong(cursor.getColumnIndex("_id"));
            resolver.delete(ContentUris.withAppendedId(eventsUri, eventId), null, null);
        }
        cursor.close();
    }

问题答案:

从日历中读取数据后,只需尝试一下即可。

向日历添加单次事件

要将条目添加到特定日历,我们需要配置一个日历条目以使用ContentValues进行插入,如下所示:

ContentValues event = new ContentValues();

每个事件都需要绑定到特定的日历,因此,您要设置的第一件事是将事件插入到的日历的标识符:

event.put("calendar_id", calId);

然后,我们设置有关事件的一些基本信息,包括String字段,例如事件标题,描述和位置。

event.put("title", "Event Title");
event.put("description", "Event Desc");
event.put("eventLocation", "Event Location");

有许多不同的选项可用于配置事件的时间和日期。

我们可以如下设置事件开始和结束信息:

long startTime = START_TIME_MS;
long endTime = END_TIME_MS;
event.put("dtstart", startTime);
event.put("dtend", endTime);

如果要添加生日或假日,则将条目设置为全天活动:

event.put("allDay", 1);   // 0 for false, 1 for true

该信息对于大多数条目而言已足够。但是,还有许多其他有用的日历条目属性。

例如,您可以将事件状态设置为暂定(0),已确认(1)或已取消(2):

event.put("eventStatus", 1);

您可以通过将事件的可见性设置为默认(0),机密(1),私有(2)或公开(3),控制哪些人可以看到此事件:

event.put("visibility", 0);

通过将事件的透明度设置为不透明(0)或透明(1),可以控制事件在日历上是否消耗时间(可能有计划冲突)。

event.put("transparency", 0);

您可以控制事件是否触发提醒警报,如下所示:

event.put(“ hasAlarm”,1); // 0代表假,1代表真

一旦正确配置了日历事件,我们就可以使用ContentResolver将新的日历条目插入相应的日历事件Uri中:

 Uri eventsUri = Uri.parse("content://calendar/events");
  Uri url = getContentResolver().insert(eventsUri, event);

对insert()方法的调用与Calendar内容提供者联系,并尝试将条目插入适当的用户Calendar中。如果导航到“日历”应用程序并启动它,则应该在适当的“日历”中看到日历条目。由于日历是同步的,因此如果您在网络上使用Google日历,您还将在网上看到日历条目。

删除活动

 private int DeleteCalendarEntry(int entryID) {
        int iNumRowsDeleted = 0;

        Uri eventsUri = Uri.parse(getCalendarUriBase()+"events");
        Uri eventUri = ContentUris.withAppendedId(eventsUri, entryID);
        iNumRowsDeleted = getContentResolver().delete(eventUri, null, null);

        Log.i(DEBUG_TAG, "Deleted " + iNumRowsDeleted + " calendar entry.");

        return iNumRowsDeleted;
    }

也通过此链接删除



 类似资料:
  • 我试着从我的应用程序(ICS及以上)读取本机日历事件,但有时它工作,有时它显示一些不正确的值。目前我正在使用这段代码,谁能告诉我,我哪里出错了…

  • 我用的是Flutter,firestore和台历。 这是我的代码,目前工作,但有一个小故障 这是我的转换地图 打印的结果是漂亮的这个。 I/flutter(1655):添加事件:deuxio I/flutter(1655):添加事件:PremierVraiTest I/flutter(1655):添加事件:测试I/flutter(1655):{2020-09-17 13:00:00.000:[事件

  • 问题内容: 我编写了用于删除android日历中所有条目的简单代码,但并未删除任何内容。 源代码: 问题答案: 我这样称呼它:

  • 问题内容: 我正在构建一个应用程序,其中我从服务器请求一个PHP文件。此PHP文件返回一个以JSONObjects为元素的JSONArray,例如, 我的代码: 如何从此JSONArray删除特定元素? 问题答案: 试试这个代码 编辑: 使用将添加到键和值。所以,用自己

  • 问题内容: 我分别在端口8006和8007上托管特殊的HTTP和HTTPS服务。我使用iptables来“激活”服务器;即路由传入的HTTP和HTTPS端口: 这就像一个魅力。但是,我想创建另一个脚本来再次禁用服务器。也就是说,将iptables恢复到运行上述行之前的状态。但是我很难弄清楚删除这些规则的语法。似乎唯一起作用的是完全冲洗: 但这也会删除其他不希望的iptables规则。 问题答案:

  • 问题内容: 我使用以下命令删除了一年以上的文件。 但是,现在我想删除所有修改时间 早于2014年1月1日的文件 我如何在Linux中做到这一点。 问题答案: 您可以将时间戳记作为文件,并将其用作参考点: 例如,2014年1月1日: 之所以有效,是因为我们正在使用一个开关。 来自: