1

Android2.2以降でアプリケーションを実行したい。

カレンダーにイベントを挿入する関数を作成したいのですが、作成できません。以下の機能を動作させる方法は?

MinSDKレベル8のAndroid2.2でアプリケーションを実行します

<uses-sdk android:minSdkVersion="8" />

以下のライブラリをインポートできません:

import android.provider.CalendarContract;
import android.provider.CalendarContract.Events;

private void saveCalendarEventICS(ArrayList<EventItem> event, int position) {

        Intent intent = new Intent(Intent.ACTION_INSERT)
         .setType("vnd.android.cursor.item/event")
         .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, "1111111")
         .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, "222222")
         .putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY , false) // just included for completeness
         .putExtra(Events.TITLE,event.get(position).title)
         .putExtra(Events.DESCRIPTION, "dcscdsvvd")
         .putExtra(Events.EVENT_LOCATION, "Kuala Lumpur")
         .putExtra(Events.RRULE, "FREQ=DAILY;COUNT=10") 
         .putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY)
         .putExtra(Events.ACCESS_LEVEL, Events.ACCESS_PRIVATE)
         .putExtra(Events.ALLOWED_REMINDERS, "METHOD_DEFAULT")
         .putExtra(Intent.EXTRA_EMAIL, "");
        startActivity(intent);
    }
4

2 に答える 2

0

コードでこれを試してください:

Calendar cal = Calendar.getInstance();              
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra("beginTime", cal.getTimeInMillis());
intent.putExtra("allDay", true);
intent.putExtra("rrule", "FREQ=YEARLY");
intent.putExtra("endTime", cal.getTimeInMillis()+60*60*1000);
intent.putExtra("title", "A Test Event from android app");
startActivity(intent);

編集:

このコードをチェック http://code.google.com/p/android-calendar-provider-tests/source/browse/trunk/src/com/androidbook/androidcalendar/CalendarActivity.java

于 2013-01-25T08:33:27.887 に答える
0

In Ics a new Calendar api is introduced so your code will not be worked in ics. New Public APIs in ICS

In order to support adding event in all calendar you can change your code like this -

if (Build.VERSION.SDK_INT >= 14) {
            saveCalendarEventICS();
        }
        else {
            int cal_id = getCalendar_ID();
            if(cal_id != 0){
                saveCalendarEvent(cal_id);
            }
        }

private int getCalendar_ID() {
            // TODO Auto-generated method stub
            int calendar_id         = 0;
            String[] projection     = new String[] { "_id", "name" };
            String selection        = "selected=1";
            String path             = "calendars";
            Cursor calendarCursor   = getCalendarCursor(projection, selection, path);

        if (calendarCursor != null && calendarCursor.moveToFirst()) {
            int nameColumn      = calendarCursor.getColumnIndex("name");
            int idColumn        = calendarCursor.getColumnIndex("_id");
            do {
                String calName  = calendarCursor.getString(nameColumn);
                String calId    = calendarCursor.getString(idColumn);
                if (calName != null /*&& calName.contains("Test")*/) {
                    calendar_id = Integer.parseInt(calId);
                }
            } while (calendarCursor.moveToNext());
        }
        return calendar_id;
    }

private void saveCalendarEventICS() {

        Intent intent = new Intent(Intent.ACTION_INSERT)
         .setType("vnd.android.cursor.item/event")
         .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, frsttime)
         .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, sncdtime)
         .putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY , false) // just included for completeness
         .putExtra(Events.TITLE, vl_hldr[0])
         .putExtra(Events.DESCRIPTION, vl_hldr[2])
         .putExtra(Events.EVENT_LOCATION, vl_hldr[1])
         .putExtra(Events.RRULE, "FREQ=DAILY;COUNT=10") 
         .putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY)
         .putExtra(Events.ACCESS_LEVEL, Events.ACCESS_PRIVATE)
         .putExtra(Events.ALLOWED_REMINDERS, "METHOD_DEFAULT")
         .putExtra(Intent.EXTRA_EMAIL, "");
        startActivity(intent);
    }


private void saveCalendarEvent(int calid) {
            // TODO Auto-generated method stub

//Create the event here -----------


            Uri newEvent;
            if (Build.VERSION.SDK_INT >= 8) {
                //newEvent = Uri.parse("content://com.android.calendar/events");
                newEvent = ctx.getContentResolver().insert(Uri.parse("content://com.android.calendar/events"), event);

                if (newEvent != null) {
                    long id = Long.parseLong( newEvent.getLastPathSegment() );
                    ContentValues values = new ContentValues();
                    values.put( "event_id", id );
                    values.put( "method", 1 );
                    values.put( "minutes", 15 ); // 15 minuti

                    getContentResolver().insert( Uri.parse( "content://com.android.calendar/reminders" ), values );
                }
            }
            else {
                newEvent = ctx.getContentResolver().insert(Uri.parse("content://calendar/events"), event);

                if (newEvent != null) {
                    long id = Long.parseLong( newEvent.getLastPathSegment() );
                    ContentValues values = new ContentValues();
                    values.put( "event_id", id );
                    values.put( "method", 1 );
                    values.put( "minutes", 15 ); // 15 minuti

                    getContentResolver().insert( Uri.parse( "content://calendar/reminders" ), values );
                }
            }

        }catch(Exception ee){}

    }
于 2013-01-25T08:48:38.463 に答える