android - 检索 Android 中的默认日历 ID

标签 android calendar

我有以下用于将事件添加到日历的代码。

问题是我不知道如何检索默认 日历 ID。

long calID = 3;
long startMillis = 0; 
long endMillis = 0;     
Calendar beginTime = Calendar.getInstance();
beginTime.set(2013, 3, 23, 7, 30);
startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(2013, 3, 24, 8, 45);
endMillis = endTime.getTimeInMillis();

ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
values.put(Events.DTSTART, startMillis);
values.put(Events.DTEND, endMillis);
values.put(Events.TITLE, "My Test");
values.put(Events.DESCRIPTION, "My Calendar Test");
values.put(Events.CALENDAR_ID, calID);
values.put(Events.EVENT_TIMEZONE, "Israel/tel-aviv");
Uri uri = cr.insert(Events.CONTENT_URI, values);

行:long calID = 3;是日历id

是否可以从 Android 获取默认日历 ID,或者我是否需要显示日历列表并让用户选择一个?

如果不可以,如何显示日历帐户列表?

最佳答案

要获取日历列表,您需要像这样查询 ContentResolver:

public MyCalendar [] getCalendar(Context c) {

    String projection[] = {"_id", "calendar_displayName"};
    Uri calendars;
    calendars = Uri.parse("content://com.android.calendar/calendars");

    ContentResolver contentResolver = c.getContentResolver();
    Cursor managedCursor = contentResolver.query(calendars, projection, null, null, null);

    if (managedCursor.moveToFirst()){
        m_calendars = new MyCalendar[managedCursor.getCount()];
        String calName;
        String calID;
        int cont= 0;
        int nameCol = managedCursor.getColumnIndex(projection[1]);
        int idCol = managedCursor.getColumnIndex(projection[0]);
        do {
            calName = managedCursor.getString(nameCol);
            calID = managedCursor.getString(idCol);
            m_calendars[cont] = new MyCalendar(calName, calID);
            cont++;
        } while(managedCursor.moveToNext());
        managedCursor.close();
    }
    return m_calendars;

}

关于android - 检索 Android 中的默认日历 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16242472/

相关文章:

android - CircleProgress 与自定义 StrokeCap Image Flutter

android - 在 Android 上写入内部 SD 卡

android - ACTION_VOICE_COMMAND 什么都不做

android - 如何修复 FragmentManager 已经在 FragmentTransaction 中执行事务?

ios - 在日历 View 中禁用所有其他日期

java - 从适配器类获取不同 Activity 中的 EditText 值

ios - 保存/编辑重复日历事件的最佳方法

java - 公历夏令时问题

同步到 Exchange 帐户时,iOS 无法更新日历事件

objective-c - objective-c 中当月的星期二数