【问题标题】:Android - Create Custom Calendar with EventAndroid - 创建带有事件的自定义日历
【发布时间】:2015-02-11 12:34:57
【问题描述】:

我有一个显示特殊日子的应用程序。我想将它们整合到日历中。

事件是静态的,不会改变,所以我不必经常更新日历。

我首先想到的是创建一个本地日历并添加事件,但是新的 android 版本(从 2.3 开始?)似乎不支持这一点;要实现,我必须创建一个日历提供程序。

我在 github 上看到了这个项目:https://github.com/dschuermann/birthday-adapter。非常复杂;它的主要用途是将联系人的生日添加到新日历中。

有很多代码,其中很多我认为我不需要。我真的需要注册 android 的客户经理来集成日历提供程序吗?我的活动只需要一个新日历...

使用用户的默认日历并在那里添加所有事件会更容易吗?我可以在描述中添加一些标识符,以便能够在用户不想要事件时删除它们。

感谢任何提示、教程或进一步阅读。

梅丁羽衣甘蓝

【问题讨论】:

    标签: java android events calendar provider


    【解决方案1】:

    您可以通过 Intent 在设备日历中创建活动。我认为它可能对你有用。

    public long addEventToCalender(ContentResolver cr, String title, String addInfo, String place, int status,
                                          long startDate, boolean isRemind,long endDate) {
        String eventUriStr = "content://com.android.calendar/events";
        ContentValues event = new ContentValues();
        // id, We need to choose from our mobile for primary its 1
        event.put("calendar_id", 1);
        event.put("title", title);
        event.put("description", addInfo);
        event.put("eventLocation", place);
        event.put("eventTimezone", "UTC/GMT +2:00");
    
        // For next 1hr
        event.put("dtstart", startDate);
        event.put("dtend", endDate);
        //If it is bithday alarm or such kind (which should remind me for whole day) 0 for false, 1 for true
        // values.put("allDay", 1);
        //  event.put("eventStatus", status);
        event.put("hasAlarm", 1);
    
        Uri eventUri = cr.insert(Uri.parse(eventUriStr), event);
        long eventID = Long.parseLong(eventUri.getLastPathSegment());
    
        if (isRemind) {
            String reminderUriString = "content://com.android.calendar/reminders";
            ContentValues reminderValues = new ContentValues();
            reminderValues.put("event_id", eventID);
            // Default value of the system. Minutes is a integer
            reminderValues.put("minutes", 5);
            // Alert Methods: Default(0), Alert(1), Email(2), SMS(3)
            reminderValues.put("method", 1);
            cr.insert(Uri.parse(reminderUriString), reminderValues); //Uri reminderUri =
        }
        return eventID;
    }
    

    欲了解更多信息,请访问http://developer.android.com/reference/java/util/Calendar.html

    【讨论】:

    • 意图启动是一项活动,但我必须一次放置大约 30 个事件...您的代码被剪断...
    【解决方案2】:

    在此回复中,您将了解如何获取联系人和生日。 Android Applicaiton - How to get birthday of a contact

    这个库将为您提供强大而灵活的日程安排,让您可以使用 Caldroid Library

    【讨论】:

    • 1) 我不需要项目的联系人部分,我只需要日历与我的数据集成.. 2) 我不需要 Caldroid 或类似的东西,我不想集成我的事件到 android 日历
    猜你喜欢
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 2021-02-13
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多