如何在Android中查找和选择活动日历?

use*_*511 -1 android calendar android-widget android-calendar

我正在尝试在Android应用程序的日历中实现查找和选择事件.我相信,查找和选择有完全不同的实现.

我在网上搜索无济于事.我很感激你的帮助.

She*_*tib 5

manifest

<uses-permission android:name="android.permission.READ_CALENDAR" />
Run Code Online (Sandbox Code Playgroud)

这些例子适用于<= 2.1版本;

第一; 找出存在哪些日历

Cursor cursor = cr.query(Uri.parse("content://calendar/calendars"), new String[]{ "_id",  "displayname" }, null, null, null);
cursor.moveToFirst();
String[] CalNames = new String[cursor.getCount()];
int[] CalIds = new int[cursor.getCount()];
for (int i = 0; i < CalNames.length; i++) {
    CalIds[i] = cursor.getInt(0);
    CalNames[i] = cursor.getString(1);
    cursor.moveToNext();
}
cursor.close();
Run Code Online (Sandbox Code Playgroud)

通过指定范围来获取所有事件和特定事件
ContentResolver contentResolver = getContentResolver();

Uri.Builder builder = Uri.parse(getCalendarUriBase() + "/instances/when").buildUpon();
        long now = new Date().getTime();
        ContentUris.appendId(builder, now - DateUtils.MILLIS_PER_DAY*10000);
        ContentUris.appendId(builder, now + DateUtils.MILLIS_PER_DAY * 10000);
Run Code Online (Sandbox Code Playgroud)

然后假设您希望从ID = 1的日历中记录事件ID

Cursor eventCursor = contentResolver.query(builder.build(),
                new String[] { "event_id"}, "Calendars._id=" + 1,
                null, "startDay ASC, startMinute ASC"); 
        // For a full list of available columns see http://tinyurl.com/yfbg76w
        while (eventCursor.moveToNext()) {
            String uid2 = eventCursor.getString(0);
            Log.v("eventID : ", uid2);

        }
Run Code Online (Sandbox Code Playgroud)

并且对于一些源代码检查 Jim Blackler 在Google Android应用程序Android日历事件中访问内部日历数据库