安卓(Android) 怎么确保本地日历(Calendar)具有名称

2019年10月2日21:55:05安卓(Android) 怎么确保本地日历(Calendar)具有名称已关闭评论 357 1541字阅读5分8秒

1.简介

安卓(Android) 怎么确保本地日历(Calendar)具有名称?——请看下文。

2.示例代码

/**
 * 版权所有 编程十万个怎么办(www.tah1986.com)
 */



import java.util.TimeZone;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.CalendarContract;

import android.provider.CalendarContract.Calendars;

public class Main {
    public static Uri ensureLocalCalendarWithName(Context ctx, String name) {
        Uri query = CalendarContract.Calendars.CONTENT_URI;

        Cursor c = ctx.getContentResolver().query(query, null,
                Calendars.NAME + "=?", new String[] { name }, null);
        long id = -1;
        if (c.moveToNext()) {
            id = c.getLong(c.getColumnIndex(Calendars._ID));
        }
        c.close();
        if (id > 0) {
            return query.buildUpon().appendPath(Long.toString(id)).build();
        }

        Uri target = CalendarContract.Calendars.CONTENT_URI
                .buildUpon()
                .appendQueryParameter(
                        CalendarContract.CALLER_IS_SYNCADAPTER,
                        Boolean.TRUE.toString())
                .appendQueryParameter(
                        CalendarContract.Calendars.ACCOUNT_NAME,
                        "dummyAccount")
                .appendQueryParameter(
                        CalendarContract.Calendars.ACCOUNT_TYPE,
                        CalendarContract.ACCOUNT_TYPE_LOCAL).build();

        ContentValues values = new ContentValues();

        values.put(Calendars.ACCOUNT_NAME, "dummyAccount");
        values.put(Calendars.ACCOUNT_TYPE,
                CalendarContract.ACCOUNT_TYPE_LOCAL);

        
        values.put(Calendars.NAME, name);
        values.put(Calendars.CALENDAR_DISPLAY_NAME, name);

        values.put(Calendars.CALENDAR_COLOR, 0xFF0000);

        values.put(Calendars.VISIBLE, 1);
        values.put(Calendars.SYNC_EVENTS, 1);
        values.put(Calendars.CALENDAR_TIME_ZONE, TimeZone.getDefault()
                .toString());

        Uri newCalendar = ctx.getContentResolver().insert(target, values);
        return newCalendar;
    }
}

 
继续阅读
编程十万个怎么办