在Android上与与会者建立一个电子邮件

时间:2011-04-20 20:01:17

标签: android calendar android-contentprovider

我尝试创建一个事件并向其添加电子邮件。

我无法得到它,我得到的时间是1970年,没有电子邮件。

任何想法?

感谢。

这是我使用的代码:

    Uri calendars = null;
   if (Integer.parseInt(Build.VERSION.SDK) == 8 )
   {
         calendars = Uri.parse("content://com.android.calendar/calendars");
   }
   else
   {
          calendars = Uri.parse("content://calendar/calendars");
   }

   Cursor cursor = context.getContentResolver().query(calendars,                                                                  new String[] { "_id", "displayName" },                                                    "selected=1",                                                   null,                                                   null);

   if (cursor != null && cursor.moveToFirst()) 
   {
       String[] calNames = new String[cursor.getCount()];
   final int[] calIds = new int[cursor.getCount()];
   for (int i = 0; i < calNames.length; i++) 
   {
    // retrieve the calendar names and ids               
    calIds[i] = cursor.getInt(0);
    calNames[i] = cursor.getString(1);
    cursor.moveToNext();
   } 
cursor.close();
    String name = "Name1";
    String eMail = "name1@nnn.com";
    ContentValues event = new ContentValues();

    int cal_id = calIds[which];
    event.put("calendar_id", cal_id);
    event.put("title", "test title");
    event.put("eventLocation", "test location");            
    event.put("eventStatus", 1);
    event.put("visibility", 0);
    event.put("transparency", 0);
    event.put("hasAlarm", 1);
    event.put("hasAttendeeData", "1");

    Calendar c = Calendar.getInstance();
    c.roll(Calendar.DAY_OF_MONTH, true);

    Date date = c.getTime();
    Date begine = new Date(date.getYear(), 
            date.getMonth(), 
            date.getDate(), 
            14, 0);         long dtstart = begine.getTime();
    event.put("dtstart", dtstart);

    Date end = new Date(date.getYear(), 
                date.getMonth(), 
                date.getDate(), 
                15, 0);
    long dtend = end.getTime();

    event.put("dtend", dtend);
Uri eventsUri = null;
    if (Integer.parseInt(Build.VERSION.SDK) == 8 )
    {
       eventsUri = Uri.parse("content://com.android.calendar/events");
    }
    else
{
      eventsUri = Uri.parse("content://calendar/events");
    }
    Uri url = context.getContentResolver().insert(eventsUri, event);
    long id = -1;

    if (url != null) 
    {
         id = Long.parseLong(url.getLastPathSegment());
        ContentValues values = new ContentValues();
        values.put("event_id", id);
        values.put("method", 1); //METHOD_ALERT
        values.put("minutes", 15); // 15 minutes
        Uri reminder = Uri.parse("content://com.android.calendar/reminders");
            context.getContentResolver().insert(reminder, values);
        if(name.length() > 0 || eMail.length() > 0)
        {
            ContentValues attendees = new ContentValues();
            attendees.put("attendeeEmail", eMail);
            attendees.put("attendeeName", name);
            attendees.put("attendeeRelationship", 2);//RELATIONSHIP_ATTENDEE
            attendees.put("attendeeStatus", 3); //ATTENDEE_STATUS_INVITED       
            attendees.put("attendeeType", 1); //TYPE_REQUIRED
            attendees.put("event_id", id);

            Uri attendeesUri = null;
            if (Integer.parseInt(Build.VERSION.SDK) == 8 )
            {
                     attendeesUri = Uri.parse("content://com.android.calendar/attendees");
            }
                else
                {
                    attendeesUri = Uri.parse("content://calendar/attendees");
                }
            context.getContentResolver().insert(attendeesUri, attendees);

            Intent i = new Intent(Intent.ACTION_EDIT); 

            i.setType("vnd.android.cursor.item/event");
            i.setData(url);

            context.startActivity(i);
        }
        else
        {
            Toast.makeText(context, "Could not create an event!", Toast.LENGTH_LONG);               
        }

2 个答案:

答案 0 :(得分:1)

校正在这里......

而不是attendees.put("attendeeRelationship", 2);//RELATIONSHIP_ATTENDEE

你必须放attendees.put("attendeeRelationship", 1);//RELATIONSHIP_ATTENDEE。只需进行更改,您就可以获得所需的电子邮件地址和与会者姓名。

此处2适用于organizer

1适用于attendees

另外look here

答案 1 :(得分:0)

在Epoch(1970年1月1日)使用此链接epoch time converter获取当前时间之后,dtStart和dtEnd的时间应为毫秒。将它在该站点上提供的时间乘以1000,因为它以秒为单位返回,而不是毫秒。

此外,dtEnd和dtStart属于“long”类型。

Long dtStart
Long dtEnd