0
protected void addToCalendar()
    {
        final ContentResolver cr = this.getContentResolver();
        Cursor cursor = cr.query(Uri.parse("content://com.android.calendar/calendars"), new String[]{ "_id", "displayName" }, null, null, null);

        cursor.moveToFirst();
            String[] calNames = new String[cursor.getCount()];
        final int[] calIds = new int[cursor.getCount()];
        Log.i("Cal Names Length", "Length of Cals:"+calNames.length);
        Log.i("Names of calendar:", "Cal names:"+calNames.toString());
        for (int i=0; i<calNames.length; i++)
        {
            calIds [i] = cursor.getInt(0);
            calNames[i] = cursor.getString(1);
            cursor.moveToNext();
            Log.i("Calendar", "Cal_id:"+calIds[0]);
            Log.i("Calendar", "Cal_Name:"+calNames[0]);
        }
        cursor.close();

        ContentResolver cr = getContentResolver();

        if(calIds.length > 0)
        {
            Log.i("in if condition", "Of calIds.length");
            Calendar cal =  Calendar.getInstance(); 
            Date birth_date = null;
            for (int i = 0; i < final_list.size(); i++)
            {
                    obj = final_list.get(i);
                    String dateFromDB = obj.getmBirthday();

                    SimpleDateFormat parser = new SimpleDateFormat("MM/dd/yyyy");
                    try 
                    {
                         birth_date = parser.parse(dateFromDB);
                    } 

                    catch (java.text.ParseException e)
                    {
                        e.printStackTrace();
                    }


                 // event insert
                    int cal_id = calIds[0];
                    ContentValues values = new ContentValues();
                    values.put("calendar_id", cal_id);
                    Log.i("Calendar", "Cal_ID:"+cal_id);
                    values.put("title", obj.getmName());
                    Log.i("Title", "Title:"+obj.getmName());

                    values.put("dtstart", birth_date.getTime());

                    values.put("dtend",  birth_date.getTime() + 1800*1000);

                    values.put("duration",  1800*1000 );
                    values.put("description", "Birthday Reminder");
                    values.put("allDay", 1);
                    values.put("rrule", "FREQ=YEARLY");
                    values.put("visibility", 0);
                    values.put("hasAlarm", 1);
                    cr.insert(Uri.parse("content://com.android.calendar/events"), values);


            }

        }

    }

ボタンクリックでこのメソッドを使用しました。ボタンをクリックすると、イベントの ArrayList が Android デバイスのデフォルト カレンダーに追加されます。しかし、このコードでは、カレンダーに追加されたイベントを確認できません。そして、カレンダーにエントリが追加されていないとさえ思います。ありがとうございました。

4

1 に答える 1

3

これは私が使用しているもので、私のコードで動作します

Intent intent = new Intent(Intent.ACTION_EDIT);  
intent.setType("vnd.android.cursor.item/event");
intent.putExtra("beginTime", startDate.getTimeInMillis());
intent.putExtra("endTime", endDate.getTimeInMillis());
intent.putExtra("title", title);
activty.startActivity(intent);

イベントは Android カレンダーに追加されますが、同じイベントが既に存在するかどうかはチェックされません (イベントが重複している可能性があります)。

于 2013-01-17T14:39:53.367 に答える