android - 在 Android 日历中添加事件

标签 android events android-calendar android-syncadapter

private void setEvent(){        
    long startMilis = 0;
    int mCalId = 1;
    long endMilis = 0;
    Calendar beginTime = Calendar.getInstance();
    beginTime.set(2013, 1, 29, 9, 10);
    startMilis = beginTime.getTimeInMillis();  
    Calendar endTime = Calendar.getInstance();
    endTime.set(2013, 1, 30, 10,10);
    endMilis = endTime.getTimeInMillis();

    ContentResolver cr = getContentResolver();
    ContentValues values = new ContentValues();
    values.put(Events.CALENDAR_ID, mCalId);
    values.put(Events.DTSTART, startMilis);
    values.put(Events.DTEND, endMilis);
    values.put(Events.TITLE,"Special Event");
    values.put(Events.DESCRIPTION, "Group Activity");
    values.put(Events.EVENT_TIMEZONE, "America/Los_Angeles");
    Uri uri = cr.insert(Events.CONTENT_URI, values);
    Toast.makeText(this, "Event Added", Toast.LENGTH_LONG).show();
}

这是我的代码 fragment ,我想在其中将事件添加到 android 日历。代码工作正常。

但是在设备上测试时,指定的事件实际上并没有被添加,也没有出现在日历中。代码完全没有错误,我已经提供了必要的权限。

谁能告诉我到底哪里做错了。

最佳答案

如果没有错误,但事件没有出现在日历中, 我怀疑罪魁祸首是 mCalId = 1 赋值。

一个设备可以有多个日历。不能保证 id == 1 的那个是主要的(即使你使用主要的,用户也可能在多个不同的日历中有事件——例如个人和工作)。

所以,这取决于你到底想做什么。您应该:

  • 使用主日历(带有 IS_PRIMARY 的日历,但请参阅上面的警告),或者
  • 让用户先选择一个日历(仅当查询 Calendars table 时发现多个日历),然后从那时起使用该 calendar_id

关于android - 在 Android 日历中添加事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14563723/

相关文章:

当 calendar.month 设置为 1 时,Android Calendar illegalArgumentException

android - 读取Android文件系统中的所有文件

java - Android studio java - 在 View 寻呼机内的 map fragment 中显示 Bottom Sheet 行为

javascript - 如何在 iPhone 上不使用 jQuery 获取 originalEvent

c# - 从 Eventhandler 中删除所有方法

Android 日期选择器 - 实际日期减去 X 天数

android - Android 可穿戴设备上加速度计和陀螺仪数据的连续感知

java - Kotlin - java.lang.IllegalStateException : Could not execute method for android:onClick

c# - 从订阅事件或这个发送者触发事件?

android - 如何自动将事件添加到日历?