2016-09-26 2 views
0

Привет я добавил событие в календарь устройства, используя ниже код,Добавление события в календарь устройства не работает в зефира андроид

ContentResolver cr = this.getContentResolver(); 
     ContentValues values = new ContentValues(); 

     values.put(CalendarContract.Events.DTSTART, DateConversion.getMilliSecondFromString(eventStartDate)); 
     values.put(CalendarContract.Events.DTEND, DateConversion.getMilliSecondFromString(eventEndDate)); 
     values.put(CalendarContract.Events.TITLE, title); 
     values.put(CalendarContract.Events.DESCRIPTION, comment); 
     TimeZone timeZone = TimeZone.getDefault(); 
     values.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID()); 
     values.put(CalendarContract.Events.CALENDAR_ID, 1); 
    if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_CALENDAR) != PackageManager.PERMISSION_GRANTED) { 
    return; 
} 
     Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values); 
     if (uri!=null){ 
      Log.d(TAG, "event addEventToMyCalendar: Uri=>"+Long.valueOf(uri.getLastPathSegment())); 
      Toast.makeText(this,"Event Added To Calendar",Toast.LENGTH_SHORT).show(); 
     }else { 
      Log.d(TAG, "event addEventToMyCalendar: Uri=>Null"); 
     } 

и моя ценность журнала,

событие addToEventToMyCalendar: название => Лувр Museum => eventStartDate => 2016-09-26 10: 00: 00 => comment => В бывшем королевском дворце французских королей Лувр - это несравненный музей, который входит в число лучших европейских коллекций изобразительного искусства. Многие ... => eventEndDate => 2016-09-26 12:00:00

событие addEventToMyCalendar: Uri => 100

, но это событие не отображается в моем календаре устройства.

Этот код работает ниже зефира. Но это не работает в зефире.

Я также добавил разрешение на выполнение для WRITE_CALENDAR.

Не могли бы вы предложить мне любую идею, чтобы решить эту проблему.

ответ

0
private void addToDeviceCalendar(String startDate,String endDate, String title,String description, String location) { 

     String stDate = startDate; 
     String enDate = endDate; 

     GregorianCalendar calDate = new GregorianCalendar(); 
     //GregorianCalendar calEndDate = new GregorianCalendar(); 

     SimpleDateFormat originalFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 
     SimpleDateFormat targetFormat = new SimpleDateFormat("yyyy,MM,dd,HH,mm"); 
     Date date,edate; 
     try { 
      date = originalFormat.parse(startDate); 
      stDate=targetFormat.format(date); 

     } catch (ParseException ex) {} 

     long startMillis = 0; 
     long endMillis = 0; 
     String dates[] = stDate.split(","); 

     SD_YeaR = dates[0]; 
     SD_MontH = dates[1]; 
     SD_DaY = dates[2]; 
     SD_HouR = dates[3]; 
     SD_MinutE = dates[4]; 


     /*Log.e("YeaR ", SD_YeaR); 
     Log.e("MontH ",SD_MontH); 
     Log.e("DaY ", SD_DaY); 
     Log.e(" HouR", SD_HouR); 
     Log.e("MinutE ", SD_MinutE);*/ 

     calDate.set(Integer.parseInt(SD_YeaR), Integer.parseInt(SD_MontH)-1, Integer.parseInt(SD_DaY), Integer.parseInt(SD_HouR), Integer.parseInt(SD_MinutE)); 
     startMillis = calDate.getTimeInMillis(); 
/* 
     try { 
      edate = originalFormat.parse(endDate); 
      enDate=targetFormat.format(edate); 

     } catch (ParseException ex) {} 


     String end_dates[] = endDate.split(","); 

     String ED_YeaR = end_dates[0]; 
     String ED_MontH = end_dates[1]; 
     String ED_DaY = end_dates[2]; 

     String ED_HouR = end_dates[3]; 
     String ED_MinutE = end_dates[4]; 


     calEndDate.set(Integer.parseInt(ED_YeaR), Integer.parseInt(ED_MontH)-1, Integer.parseInt(ED_DaY), Integer.parseInt(ED_HouR), Integer.parseInt(ED_MinutE)); 
     endMillis = calEndDate.getTimeInMillis();*/ 

     try { 
      ContentResolver cr = getActivity().getContentResolver(); 
      ContentValues values = new ContentValues(); 
      values.put(CalendarContract.Events.DTSTART, startMillis); 
      values.put(CalendarContract.Events.DTEND, calDate.getTimeInMillis() + 60 * 60 * 1000); 
      values.put(CalendarContract.Events.TITLE, title); 
      values.put(CalendarContract.Events.DESCRIPTION, description); 
      values.put(CalendarContract.Events.EVENT_LOCATION,location); 
      values.put(CalendarContract.Events.HAS_ALARM,1); 
      values.put(CalendarContract.Events.CALENDAR_ID, 1); 
      values.put(CalendarContract.Events.EVENT_TIMEZONE, Calendar.getInstance() 
        .getTimeZone().getID()); 
      System.out.println(Calendar.getInstance().getTimeZone().getID()); 
      if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_CALENDAR) != PackageManager.PERMISSION_GRANTED) { 

       return; 
      } 
      Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values); 

      long eventId = Long.parseLong(uri.getLastPathSegment()); 
      Log.d("Ketan_Event_Id", String.valueOf(eventId)); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
+0

Помимо простого написания кода и его останова, ответ может быть улучшен путем добавления описания шагов, которые вы предприняли для достижения цели. Это поможет читателям лучше понять ваш код. Без этого ваш ответ - длинный блок запутывающих кодов. –

+1

Пробовал это, но все еще проблема есть. Я получаю EventId, но событие не отображается в календаре устройства. – mustaq