如何从日历中的所有事件?日历、事件

2023-09-06 19:03:59 作者:魔道中人

我能得到使用该code事件

Hi I am able to get events using this code

cur = null;
    cr = getContentResolver();


    // Construct the query with the desired date range.
    Uri.Builder builder = Instances.CONTENT_URI.buildUpon();

    ContentUris.appendId(builder, 0);
    ContentUris.appendId(builder, endMillis);


    // Submit the query
    cur =  cr.query(builder.build(), 
        INSTANCE_PROJECTION, 
        null, 
        null, 
        null);

但正如你看到的,我可以在给定的时间期限内得到的只是事件,但我需要所有的事件(无任何时间规范不包括重复的事件),这可能吗?如何 ? 请帮助我。

but as you see I can get only events within the given time duration, but I need all the events (no any time specification excluding repeated events) is this possible ? and how ? please help me.

cur =  cr.query(Uri.parse("content://com.android.calendar/events"), 
        INSTANCE_PROJECTION, 
        null, 
        null, 
        null);

它给出​​了错误的java.lang.IllegalArgumentException异常:

it gives the error java.lang.IllegalArgumentException:

推荐答案

试试这个code ...

Try this code...

public class Utility {

public static ArrayList<String> nameOfEvent = new ArrayList<String>();
public static ArrayList<String> startDates = new ArrayList<String>();
public static ArrayList<String> endDates = new ArrayList<String>();
public static ArrayList<String> descriptions = new ArrayList<String>();

public static ArrayList<String> readCalendarEvent(Context context) {
    Cursor cursor = context.getContentResolver()
            .query(
                    Uri.parse("content://com.android.calendar/events"),
                    new String[] { "calendar_id", "title", "description",
                            "dtstart", "dtend", "eventLocation" }, null,
                    null, null);
    cursor.moveToFirst();
    // fetching calendars name
    String CNames[] = new String[cursor.getCount()];

    // fetching calendars id
    nameOfEvent.clear();
    startDates.clear();
    endDates.clear();
    descriptions.clear();
    for (int i = 0; i < CNames.length; i++) {

        nameOfEvent.add(cursor.getString(1));
        startDates.add(getDate(Long.parseLong(cursor.getString(3))));
        endDates.add(getDate(Long.parseLong(cursor.getString(4))));
        descriptions.add(cursor.getString(2));
        CNames[i] = cursor.getString(1);
        cursor.moveToNext();

    }
    return nameOfEvent;
}

public static String getDate(long milliSeconds) {
    SimpleDateFormat formatter = new SimpleDateFormat(
            "dd/MM/yyyy hh:mm:ss a");
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(milliSeconds);
    return formatter.format(calendar.getTime());
}

您还可以检查此

获取从日历事件