안드로이드 개발 질문/답변
(글 수 45,052)
어플 개발 중에 안드로이드 내부 일정을 등록하고 삭제하는 부분을 넣었습니다. 근데 제 폰(디자이어 : froyo)에서는 등록/삭제가 정상적으로 되는데 어제 갤럭시S에서 테스트했더니 일정이 등록은 되는데 삭제할 때 Can't Delete the URL이 됩니다.
첫번째 함수는 등록하는 함수이고 두번째 함수가 일정에서 삭제하는 함수입니다. 등록은 디자이어/갤s 모두 잘 됩니다만 삭제할 때 갤s가 Exception이 뜹니다.
아래 소스 보면 SDK_INT를 확인해서 7(eclair)일 경우에는
Uri.parse("content://calendar/events")로 하고 froyo 일때는 Uri.parse("content://com.android.calendar/events")로 합니다.
현재 캘린더가 Public이 아니라서 구글링해도 잘 안나오네요 ㅠ
그리고 전체 소스는 네이버 개발자 센터에 오픈소스로 등록되어 있습니다. 자라섬 국제 재즈 페스트발로 검색하시면 됩니다.
첫번째 함수는 등록하는 함수이고 두번째 함수가 일정에서 삭제하는 함수입니다. 등록은 디자이어/갤s 모두 잘 됩니다만 삭제할 때 갤s가 Exception이 뜹니다.
아래 소스 보면 SDK_INT를 확인해서 7(eclair)일 경우에는
Uri.parse("content://calendar/events")로 하고 froyo 일때는 Uri.parse("content://com.android.calendar/events")로 합니다.
현재 캘린더가 Public이 아니라서 구글링해도 잘 안나오네요 ㅠ
그리고 전체 소스는 네이버 개발자 센터에 오픈소스로 등록되어 있습니다. 자라섬 국제 재즈 페스트발로 검색하시면 됩니다.
protected void sendSchedule(int year, int month, JJdata data) {
Uri calendars = null;
Calendar calStTime = Calendar.getInstance();
Calendar calEndTime = Calendar.getInstance();
int startHour = Integer.parseInt(data.getPerf_st_time().substring(0, 2));
int startMinute = Integer.parseInt(data.getPerf_st_time().substring(3, 5));
int endHour = Integer.parseInt(data.getPerf_end_time().substring(0, 2));
int endMinute = Integer.parseInt(data.getPerf_end_time().substring(3, 5));
calStTime.set(Calendar.YEAR, year);
calStTime.set(Calendar.MONTH, month-1);
calStTime.set(Calendar.DATE , PERF_DAYS[data.getPerf_day()-1]);
calStTime.set(Calendar.HOUR_OF_DAY, startHour);
calStTime.set(Calendar.MINUTE, startMinute);
calEndTime.set(Calendar.YEAR, year);
calEndTime.set(Calendar.MONTH, month-1);
calEndTime.set(Calendar.DATE , PERF_DAYS[data.getPerf_day()-1]);
calEndTime.set(Calendar.HOUR_OF_DAY, endHour);
calEndTime.set(Calendar.MINUTE, endMinute);
if(android.os.Build.VERSION.SDK_INT == 7){
calendars = Uri.parse("content://calendar/calendars");
}else{
calendars = Uri.parse("content://com.android.calendar/calendars");
}
String[] projection = new String[] { "_id", "name" };
Cursor managedCursor = getContentResolver().query(calendars, projection, "selected=1", null, null);
if (managedCursor.moveToFirst()) {
String[] CalNames = new String[managedCursor.getCount()];
int[] CalIds = new int[managedCursor.getCount()];
for (int i = 0; i < CalNames.length; i++) {
CalIds[i] = managedCursor.getInt(0);
CalNames[i] = managedCursor.getString(1);
managedCursor.moveToNext();
}
managedCursor.close();
ContentValues cv = new ContentValues();
cv.put("calendar_id", CalIds[0]);
cv.put("title", data.getSinger());
long startTime = calStTime.getTimeInMillis();
long endTime = calEndTime.getTimeInMillis();
cv.put("dtstart", startTime); // start time <string dd-mm-yyyy tt:mm:ss>
cv.put("dtend", endTime); // end time <string dd-mm-yyyy tt:mm:ss>
// cv.put("minutes", before); // alarm described as minutes before
cv.put("allDay", 0);
cv.put("eventStatus", 1);
cv.put("hasAlarm", 1); // 0 for false, 1 for true
// TODO 알람 서비스를 어떻게 할 것인가??
// cv.put( "alarmTime", before );
cv.put("eventLocation", "가평 자라섬, "+ Stages[data.getStage()-1]);
if(android.os.Build.VERSION.SDK_INT == 7){
Log.d("JARASUMJAZZ_LOG", "TEST1 : " + data.getSinger() + " , " + String.valueOf(startTime));
Uri newevent = getContentResolver().insert(Uri.parse("content://calendar/events"), cv);
}else{
Log.d("JARASUMJAZZ_LOG", "TEST2 : " + data.getSinger() + " , " + String.valueOf(startTime));
Uri newevent = getContentResolver().insert(Uri.parse("content://com.android.calendar/events"), cv);
}
}
}/**
* @param data2 아티스트 정보 중에서 아티스트명으로 일정을 삭제한다. 중복되는 경우
* @throws SQLException
*/
protected void removeSchedule(JJdata data2) throws SQLException{
// TODO 데이터를 지울 수 있도록 한다
Uri calendars = null; if(android.os.Build.VERSION.SDK_INT == 7){
calendars = Uri.parse("content://calendar/calendars");
}else{
calendars = Uri.parse("content://com.android.calendar/calendars");
}
String[] projection = new String[] { "_id", "name" };
Cursor managedCursor = getContentResolver().query(calendars, projection, "selected=1", null, null); if (managedCursor.moveToFirst()) {
String CalTitle = "";
int CalId = 0;
for (int i = 0; i < managedCursor.getCount(); i++) {
CalId = managedCursor.getInt(managedCursor.getColumnIndex("_id"));
CalTitle = managedCursor.getString(managedCursor.getColumnIndex("name"));
managedCursor.moveToNext();
}
managedCursor.close();
if(android.os.Build.VERSION.SDK_INT == 7){
int newevent = getContentResolver().delete(Uri.parse("content://calendar/events"), "title=" + "'" +data2.getSinger() + "'", null);
Log.d("JARASUMJAZZ_LOG", "TEST1 : " + newevent);
}else{
int newevent = getContentResolver().delete(Uri.parse("content://com.android.calendar/events"), "title=" + "'" +data2.getSinger() + "'", null);
Log.d("JARASUMJAZZ_LOG", "TEST2 : " + newevent);
}
}
}


