0

カレンダーを作りたいです。動作しています。ただし、Androidバージョンが+4.0の場合。それは動作しません。コンテンツプロバイダーを使用する必要があることは知っていますが、その方法がわかりません。カレンダーがAndroidのすべてのバージョンで機能するようにしたいと思います。どうすればいいですか?

   private void AddCalendar(int years,int months,int days,int hours,int minutes){
        try{
        // get calendar
        Calendar cal = Calendar.getInstance();     
        Uri EVENTS_URI = Uri.parse("content://com.android.calendar/events");
        ContentResolver cr = getContentResolver();

        Calendar start = Calendar.getInstance();
        start.set(years, months, days, hours, minutes, 0);

        Calendar end = Calendar.getInstance();
        end.set(years, months, days, hours + 1, minutes, 0);

        long startTime = start.getTimeInMillis();       
        long endTime = end.getTimeInMillis();

        // event insert
        ContentValues values = new ContentValues();
        values.put("calendar_id", 1);
        values.put("title", editText1.getText().toString());
        values.put("allDay", 0);
        values.put("dtstart", startTime); 
        values.put("dtend", endTime); 
        values.put("description", editText2.getText().toString());
        values.put("visibility", 0);
        values.put("hasAlarm", 1);
        Uri event = cr.insert(EVENTS_URI, values);

        // reminder insert
        Uri REMINDERS_URI = Uri.parse("content://com.android.calendar/reminders");
        values = new ContentValues();
        values.put( "event_id", Long.parseLong(event.getLastPathSegment()));
        values.put( "method", 1 );
        values.put( "minutes", 10 );
        cr.insert( REMINDERS_URI, values );

        }catch (Exception e){
            Toast.makeText(getApplicationContext(), 
                    R.string.calendar, Toast.LENGTH_LONG).show();
        }

        }
4

2 に答える 2

1

カレンダーAPIは4.0以降で変更されました。新しいCalendarIntentAPI(これが推奨される方法です)を使用するか、新しいAPIに合うようにイベントを変更できます。

values.add( "eventTimezone"、 "00"); 「可視性」キー/値を削除します。これはもう受け入れられません。

ExceptionCatcherに例外を出力する必要があります。これは非常にわかりやすいものです。

于 2012-09-13T15:25:48.630 に答える
0

ここで答えられ、機能しています!

ただし、コードを次のように変更します。

values.put(CalendarContract.Events.CALENDAR_ID, 1);

デフォルトのカレンダーを選択するために、3ではなく1。

ただし、すべてのAndroidバージョンで同じコードを使用することはできません。2つの異なるアプリを作成する必要があります.1つはAndroid4+用、もう1つはAndroid<4用です

于 2012-12-12T12:01:22.547 に答える