6

캘린더 응용 프로그램에 이벤트 수정을 요청하는 Android 애플리케이션을 개발합니다.Android 캘린더 : onActivityResult의 resultCode는 항상 0입니다.

나는 startActivityForResult()을 사용하여 캘린더를 엽니 다. 이벤트를 편집하고 저장 한 후 resultCode은 항상 onActivityResult() 안에 0입니다.

"onActivityResult resultCode는 항상 0을 반환합니다"와 관련된 여러 답변을 보았습니다. 두 번째 활동에서 setResult()finish()을 사용하지 않았기 때문입니다.

하지만 제 경우에는 Android 캘린더 응용 프로그램 (사용자 정의 활동이 아님)을 호출합니다.

안드로이드 달력하라는 메시지를 표시하는 코드 :

Intent intent = new Intent(Intent.ACTION_EDIT); 
intent.setType("vnd.android.cursor.item/event"); 
//set the event details 
startActivityForResult(intent,1); 

이 달력은 내가 "저장"을 클릭하거나 일정 응용 프로그램에서 "취소"여부를 저장하거나

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    //resultCode always returns 0. 
    switch(requestCode) { 
    case 1: 
     if (resultCode == Activity.RESULT_OK) 
     { 

     } 
    } 
} 

을 취소 될 때 트리거하려면를의 resultCode 항상 0을 제공합니다.

또한 캘린더 의도에서 데이터를 다시 가져와야합니다.하지만 onActivityResult의 의도 "데이터"도 null을 반환합니다.

아무도 왜 그런지 설명 할 수 있습니까? 사용자가 "저장"또는 "취소"를 클릭했는지 알 수있는 방법이 있습니까?

+1

가 값을 반환하도록 설계된 달력입니다 OK인가? 그렇지 않으면 항상 0을 반환합니다. – TomTsagk

+0

Android (Google) 캘린더가 결과를 반환하지 않는다고 생각합니다. 적어도 [Calendar Provider] (http://developer.android.com/guide/topics/)에 지정되어 있지 않습니다. providers/calendar-provider.html). –

+0

그렇다면 Android 캘린더 제공 업체는 사용자가 캘린더를 클릭하여 저장했는지 또는 취소했는지 알 수있는 방법을 제공합니까? – Sam35

답변

0
당신은 새로 추가 된 일정 이벤트의 lastId를 확인할 수 있습니다

,이 변경되지 않은 경우, 다음 실제로 취소 될, 그렇지 않으면

val projection = arrayOf(CalendarContract.Calendars._ID) 
cursor = contentResolver.query(CalendarContract.Events.CONTENT_URI, projection, null, null, null) 
if (cursor.moveToLast()) { 
    val lastId = cursor.getLong(0) 
    // compare lastId with a previous one, if not changed - result is CANCELLED 
}