2012-12-13 1 views
3

인 텐트를 시작하지 않고 캘린더에 일정을 추가 할 수있는 버튼을 Android 앱에 만들려고합니다.Android 4.1에 대해 프로그래밍 방식으로 캘린더 일정을 추가 할 수 없습니다.

나는 이것을 달성하는 방법을 설명하는이 공식 안드로이드 자원을 발견했습니다.

long calID = 3; 
long startMillis = 0; 
long endMillis = 0;  
Calendar beginTime = Calendar.getInstance(); 
beginTime.set(2012, 9, 14, 7, 30); 
startMillis = beginTime.getTimeInMillis(); 
Calendar endTime = Calendar.getInstance(); 
endTime.set(2012, 9, 14, 8, 45); 
endMillis = endTime.getTimeInMillis(); 
... 

ContentResolver cr = getContentResolver(); 
ContentValues values = new ContentValues(); 
values.put(Events.DTSTART, startMillis); 
values.put(Events.DTEND, endMillis); 
values.put(Events.TITLE, "Jazzercise"); 
values.put(Events.DESCRIPTION, "Group workout"); 
values.put(Events.CALENDAR_ID, calID); 
values.put(Events.EVENT_TIMEZONE, "America/Los_Angeles"); 
Uri uri = cr.insert(Events.CONTENT_URI, values); 

이 코드는 2.3, 4.0, 4.1 및 4.2를 포함한 많은 장치에서 테스트했습니다.

4.1 장치에서 작동하지 않는 것 같습니다. 이 코드를 사용하여 캘린더 이벤트를 추가하려고했지만 아무 소용이 없었습니다. 4.1에서이 버그를 다른 사람이 확인할 수 있습니까? 아니면 4.1에 캘린더 일정을 추가하는 방법이 있습니까?

+0

이 달력 http://developer.android.com/guide/topics/providers/calendar-provider.html – greatergoodguy

+0

당신이 – pt123

+0

@greatergoodguy이었다지고 오류가 무엇인지에 이벤트를 추가하는 방법을 설명 안드로이드 리소스 당신이이 문제를 해결, 나는 똑같은가? – Sun

답변

0

나는 동일한 문제가있었습니다.

문서에서는 읽을 수 있습니다 : 실제로

은, 삽입 및 업데이트는 백그라운드 스레드로 작업을 이동하는 비동기 스레드에서 수행해야합니다.

MyHandlerAsyncQueryHandler를 확장하는 클래스입니다
AsyncQueryHandler handler = new MyHandler(getContentResolver()); 
handler.startInsert(0, null, Events.CONTENT_URI, values); 

(즉, 추상적 인) :

는 코드의 마지막 줄을 제거하고이 사용

public class MyHandler extends AsyncQueryHandler { 
    public MyHandler(ContentResolver cr) { 
     super(cr); 
    } 
} 

이 작동 나를. 원인이 될 수

다른 두 개의 세부 오해 : <uses-permission android:name="android.permission.WRITE_CALENDAR" /> :

  • 월 값이
  • 당신이 매니페스트 파일에 특정 권한을 넣어야 의도없이 일정을 쓰려면 0을 기반으로 클래스 Calendar에서
0

매핑 개체를 처리하는 작은 라이브러리를 게시했습니다. 도움이 될 수도 있습니다. this blog post을 확인하십시오.