在android中,我可以在不让用户知道的情况下将事件添加到日历中吗?

在android中,我可以在不让用户知道的情况下将事件添加到日历中吗?,android,android-intent,android-calendar,android-event,Android,Android Intent,Android Calendar,Android Event,我想使用下面的代码将事件添加到我的本机日历中。它工作得很好 SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm"); final Calendar cal = Calendar.getInstance(); try { cal.setTime(formatter.parse(datetime

我想使用下面的代码将事件添加到我的本机日历中。它工作得很好

SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm");
                final Calendar cal = Calendar.getInstance();
                try {
                    cal.setTime(formatter.parse(datetime));
                    eventdate = cal.get(Calendar.YEAR)+"/"+cal.get(Calendar.MONTH)+"/"+cal.get(Calendar.DAY_OF_MONTH)+" "+cal.get(Calendar.HOUR_OF_DAY)+":"+cal.get(Calendar.MINUTE);
                    Log.e("event date",eventdate);
                } 
                catch (ParseException e) {
                    e.printStackTrace();
                }
                Intent intent = new Intent(Intent.ACTION_EDIT);
                intent.setType("vnd.android.cursor.item/event");
                intent.putExtra("beginTime", cal.getTimeInMillis());
                intent.putExtra("allDay", true);
                intent.putExtra("endTime", cal.getTimeInMillis()+60*60*1000);
                intent.putExtra("title", title);
                intent.putExtra("description",desc);
                c.startActivity(intent);
这将打开一个屏幕,要求我保存事件。当我点击save时,它会将我的活动保存到日历中


现在,我想直接将事件添加到本机日历中,而不显示上面的屏幕。有什么方法可以做到这一点吗?

您可以参考下面的代码在日历中添加事件

String GLOBAL_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
String gameDate="2015-07-12 01:10:00";
        Date startDate = DateConstants.getDateFromString(
                gameDate,GLOBAL_DATE_FORMAT);
        long endDate = startDate.getTime()
                + (PTGConstantMethod.validateInteger(game
                        .getGame_duration()) * 1000);

        ContentValues event = new ContentValues();
        event.put("calendar_id", 1);
        event.put("title", "Game#" + game.getId());
        event.put("description", game.getLocation());
        event.put("eventLocation", game.getLocation());
        event.put("eventTimezone", TimeZone.getDefault().getID());
        event.put("dtstart", startDate.getTime());
        event.put("dtend", endDate);

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

        String eventUriString = "content://com.android.calendar/events";
        Uri eventUri = context.getApplicationContext()
                .getContentResolver()
                .insert(Uri.parse(eventUriString), event);
        long eventID = Long.parseLong(eventUri.getLastPathSegment());

// if reminder need to set


            int minutes=120;


            // add reminder for the event
            ContentValues reminders = new ContentValues();
            reminders.put("event_id", eventID);
            reminders.put("method", "1");
            reminders.put("minutes", minutes);

            String reminderUriString = "content://com.android.calendar/reminders";
            context.getApplicationContext().getContentResolver()
            .insert(Uri.parse(reminderUriString), reminders);

您可以参考下面的代码在日历中添加事件

String GLOBAL_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
String gameDate="2015-07-12 01:10:00";
        Date startDate = DateConstants.getDateFromString(
                gameDate,GLOBAL_DATE_FORMAT);
        long endDate = startDate.getTime()
                + (PTGConstantMethod.validateInteger(game
                        .getGame_duration()) * 1000);

        ContentValues event = new ContentValues();
        event.put("calendar_id", 1);
        event.put("title", "Game#" + game.getId());
        event.put("description", game.getLocation());
        event.put("eventLocation", game.getLocation());
        event.put("eventTimezone", TimeZone.getDefault().getID());
        event.put("dtstart", startDate.getTime());
        event.put("dtend", endDate);

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

        String eventUriString = "content://com.android.calendar/events";
        Uri eventUri = context.getApplicationContext()
                .getContentResolver()
                .insert(Uri.parse(eventUriString), event);
        long eventID = Long.parseLong(eventUri.getLastPathSegment());

// if reminder need to set


            int minutes=120;


            // add reminder for the event
            ContentValues reminders = new ContentValues();
            reminders.put("event_id", eventID);
            reminders.put("method", "1");
            reminders.put("minutes", minutes);

            String reminderUriString = "content://com.android.calendar/reminders";
            context.getApplicationContext().getContentResolver()
            .insert(Uri.parse(reminderUriString), reminders);
不要使用它,因为在这里调用这个
c.startActivity(intent)
您正在启动一个活动,该活动将允许用户在日历中保存该活动,并要求用户保存该活动,而不是使用该活动。您可以使用ContentResolver将事件与您的信息一起插入

n像这样

            try
            {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm");
Calendar cal = Calendar.getInstance();
    cal.setTime(formatter.parse(datetime));
                        eventdate = cal.get(Calendar.YEAR)+"/"+cal.get(Calendar.MONTH)+"/"+cal.get(Calendar.DAY_OF_MONTH)+" "+cal.get(Calendar.HOUR_OF_DAY)+":"+cal.get(Calendar.MINUTE);
                        Log.e("event date",eventdate);
    // provide CalendarContract.Calendars.CONTENT_URI to
    // ContentResolver to query calendars
            Cursor      cur = this.getContentResolver().query(CalendarContract.Calendars.CONTENT_URI,null, null, null, null);
                if (cur.moveToFirst())
                {
                    long calendarID=cur.getLong(cur.getColumnIndex(CalendarContract.Calendars._ID));
    ContentValues eventValues = new ContentValues();
    // provide the required fields for creating an event to
    // ContentValues instance and insert event using
    // ContentResolver
            eventValues.put (CalendarContract.Events.CALENDAR_ID, calendarID);
            eventValues.put(CalendarContract.Events.TITLE, "Event 1"+title);
            eventValues.put(CalendarContract.Events.DESCRIPTION," Calendar API"+desc);
eventValues.put(CalendarContract.Events.ALL_DAY,true);
            eventValues.put(CalendarContract.Events.DTSTART, (cal.getTimeInMillis()+60*60*1000));
            eventValues.put(CalendarContract.Events.DTEND, cal.getTimeInMillis()+60*60*1000);
            eventValues.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().toString());
            Uri eventUri = this.getContentResolver().insert(CalendarContract.Events.CONTENT_URI, eventValues);
            eventID = ContentUris.parseId(eventUri);
                }
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
            finally
            {
                if (cur != null)
                {
                    cur.close();
                }
            }
在“保存事件”按钮中编写此代码,它将按您所看到的方式工作

不要使用它,因为在这里调用这个
c.startActivity(intent)
您正在启动一个活动,该活动将允许用户在日历中保存该活动,并要求用户保存该活动,而不是使用该活动。您可以使用ContentResolver将事件与您的信息一起插入

n像这样

            try
            {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm");
Calendar cal = Calendar.getInstance();
    cal.setTime(formatter.parse(datetime));
                        eventdate = cal.get(Calendar.YEAR)+"/"+cal.get(Calendar.MONTH)+"/"+cal.get(Calendar.DAY_OF_MONTH)+" "+cal.get(Calendar.HOUR_OF_DAY)+":"+cal.get(Calendar.MINUTE);
                        Log.e("event date",eventdate);
    // provide CalendarContract.Calendars.CONTENT_URI to
    // ContentResolver to query calendars
            Cursor      cur = this.getContentResolver().query(CalendarContract.Calendars.CONTENT_URI,null, null, null, null);
                if (cur.moveToFirst())
                {
                    long calendarID=cur.getLong(cur.getColumnIndex(CalendarContract.Calendars._ID));
    ContentValues eventValues = new ContentValues();
    // provide the required fields for creating an event to
    // ContentValues instance and insert event using
    // ContentResolver
            eventValues.put (CalendarContract.Events.CALENDAR_ID, calendarID);
            eventValues.put(CalendarContract.Events.TITLE, "Event 1"+title);
            eventValues.put(CalendarContract.Events.DESCRIPTION," Calendar API"+desc);
eventValues.put(CalendarContract.Events.ALL_DAY,true);
            eventValues.put(CalendarContract.Events.DTSTART, (cal.getTimeInMillis()+60*60*1000));
            eventValues.put(CalendarContract.Events.DTEND, cal.getTimeInMillis()+60*60*1000);
            eventValues.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().toString());
            Uri eventUri = this.getContentResolver().insert(CalendarContract.Events.CONTENT_URI, eventValues);
            eventID = ContentUris.parseId(eventUri);
                }
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
            finally
            {
                if (cur != null)
                {
                    cur.close();
                }
            }

在您的“保存事件”按钮中写入此代码,它将按您所看到的方式工作

可能重复可能重复此代码的用途,我想它对我没有用处,因为我已经有了开始日期<代码>日期开始日期=日期常量.getDateFromString(gameDate,全局日期格式);long-endDate=startDate.getTime()+(PTGConstantMethod.validateInteger(game.getGame_duration())*1000)嗨,我尝试了这段代码,但在android mobile中没有显示calender@KaranMer你能帮我查一下这个密码吗?修改了一些代码并运行,但它没有在设备日历应用程序中显示事件?这个代码是用来做什么的,我想它对我没有用,因为我已经有了开始日期<代码>日期开始日期=日期常量.getDateFromString(gameDate,全局日期格式);long-endDate=startDate.getTime()+(PTGConstantMethod.validateInteger(game.getGame_duration())*1000)嗨,我尝试了这段代码,但在android mobile中没有显示calender@KaranMer你能帮我查一下这个密码吗?修改了一些代码并运行,但没有在设备日历应用程序中显示事件?此答案对于创建无意图的事件非常有用。它将创建当前事件设备日历。感谢@Naval Kishor Jha。此答案对于创建无意图的事件非常有用。它将创建当前事件设备日历。感谢@Naval Kishor Jha。