如何在单击按钮时将事件添加到Android默认日历? 受保护的void addToCalendar() { final ContentResolver cr=this.getContentResolver(); Cursor=cr.query(Uri.parse(“content://com.android.calendar/calendars),新字符串[]{“\u id”,“displayName”},null,null,null); cursor.moveToFirst(); String[]calNames=新字符串[cursor.getCount()]; final int[]calIds=new int[cursor.getCount()]; Log.i(“Cal名称长度”,“Cal长度:“+calNames.Length”); Log.i(“日历名称:”,“Cal名称:”+calNames.toString()); 对于(int i=0;i 0) { 对数i(“在if条件下”,“刻度长度”); Calendar cal=Calendar.getInstance(); 出生日期\u Date=null; 对于(int i=0;i

如何在单击按钮时将事件添加到Android默认日历? 受保护的void addToCalendar() { final ContentResolver cr=this.getContentResolver(); Cursor=cr.query(Uri.parse(“content://com.android.calendar/calendars),新字符串[]{“\u id”,“displayName”},null,null,null); cursor.moveToFirst(); String[]calNames=新字符串[cursor.getCount()]; final int[]calIds=new int[cursor.getCount()]; Log.i(“Cal名称长度”,“Cal长度:“+calNames.Length”); Log.i(“日历名称:”,“Cal名称:”+calNames.toString()); 对于(int i=0;i 0) { 对数i(“在if条件下”,“刻度长度”); Calendar cal=Calendar.getInstance(); 出生日期\u Date=null; 对于(int i=0;i,android,events,calendar,cursor,android-contentresolver,Android,Events,Calendar,Cursor,Android Contentresolver,我在点击按钮时使用了这种方法。当我点击按钮ArrayList时,事件列表应该被添加到Android设备的默认日历中。但在这段代码中,我无法看到添加到日历中的事件。我甚至认为这个条目并没有被添加到日历中。 谢谢。这是我使用的,它在我的代码中起作用 protected void addToCalendar() { final ContentResolver cr = this.getContentResolver(); Cursor cursor = cr.q

我在点击按钮时使用了这种方法。当我点击按钮ArrayList时,事件列表应该被添加到Android设备的默认日历中。但在这段代码中,我无法看到添加到日历中的事件。我甚至认为这个条目并没有被添加到日历中。
谢谢。

这是我使用的,它在我的代码中起作用

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);


            }

        }

    }

该事件已添加到android日历中,但未检查是否已存在相同的事件(该事件可能重复)

这是我使用的,它在我的代码中起作用

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);


            }

        }

    }

该事件已添加到android日历中,但未检查是否已存在相同的事件(可能与该事件重复)

是,但如果要将事件的ArrayList添加到日历中该怎么办?我应该创建那么多日历实例?我想你会在这里找到你想要的答案。我已经完成了,但我看不到添加到我的日历(android的默认日历)的事件,即使添加cal_id为1。你发现任何异常吗?您是否尝试过从“值”中删除其中一个字段以查看您的数据是否正常?是的,我尝试过。输入的值正确地打印在日志上。是的,但是如果我想将事件的ArrayList添加到日历中怎么办?我应该创建那么多日历实例?我想你会在这里找到你想要的答案。我已经完成了,但我看不到添加到我的日历(android的默认日历)的事件,即使添加cal_id为1。你发现任何异常吗?您是否尝试过从“值”中删除其中一个字段以查看您的数据是否正常?是的,我尝试过。输入的值正确打印在日志上。