简体   繁体   English

日历与android中的自定义添加帐户同步

[英]Calendar sync with custom add account in android

I want to add events in calendar, i am able to add account but i don`t know how to sync with calendar. 我想在日历中添加活动,我可以添加帐户,但我不知道如何与日历同步。

should i create a new calendar id ? 我应该创建一个新的日历ID吗? how to verify event is created on calendar? 如何在日历上创建验证事件?

Check out this Google code project which will guide you. 查看此Google代码项目 ,它将指导您。

In that project there is a method which will give you id of account id associated with Calender. 在该项目中,有一种方法可以为您提供与日历相关联的帐户ID的ID。

private int ListSelectedCalendars() {
        int result = 0;
        String[] projection = new String[] { "_id", "name" };
        String selection = "selected=1";
        String path = "calendars";

        Cursor managedCursor = getCalendarManagedCursor(projection, selection,
                path);

        if (managedCursor != null && managedCursor.moveToFirst()) {

            Log.i(DEBUG_TAG, "Listing Selected Calendars Only");

            int nameColumn = managedCursor.getColumnIndex("name");
            int idColumn = managedCursor.getColumnIndex("_id");

            do {
                String calName = managedCursor.getString(nameColumn);
                String calId = managedCursor.getString(idColumn);
                Log.i(DEBUG_TAG, "Found Calendar '" + calName + "' (ID="
                        + calId + ")");
                // You have to give email id in below line, right now i puted my email id
                if (calName != null && calName.contains("vimalrajpara2006@gmail.com")) {
                    result = Integer.parseInt(calId);
                }
            } while (managedCursor.moveToNext());
        } else {
            Log.i(DEBUG_TAG, "No Calendars");
        }

        return result;

    }

based on that id you can add events as well search also. 基于该ID,您还可以添加事件以及搜索。

private Uri MakeNewCalendarEntry(int calId/*Value received from ListSelectedCalendars function*/) {
        ContentValues event = new ContentValues();

        event.put("calendar_id", calId);
        event.put("title", "Today's Event [TEST]");
        event.put("description", "2 Hour Presentation");
        event.put("eventLocation", "Online");

        long startTime = System.currentTimeMillis() + 1000 * 60 * 60;
        long endTime = System.currentTimeMillis() + 1000 * 60 * 60 * 2;

        event.put("dtstart", startTime);
        event.put("dtend", endTime);

        event.put("allDay", 0); // 0 for false, 1 for true
        event.put("eventStatus", 1);
        event.put("visibility", 0);
        event.put("transparency", 0);
        event.put("hasAlarm", 0); // 0 for false, 1 for true

        Uri eventsUri = Uri.parse(getCalendarUriBase()+"events");

        Uri insertedUri = getContentResolver().insert(eventsUri, event);
        return insertedUri;
    }

For more functionality check out above mention Google code project. 有关更多功能,请查看上面提到的Google代码项目。

this is work for me remember I am working on android 4.0 这是我的工作记得我正在研究android 4.0

 void createCalendar(Datahelper dh, Context mContext, Account account) 
      { 
        final ContentValues v = new ContentValues(); 
            v.put(CalendarContract.Calendars.NAME,account.name);
            v.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, account.name);                  
        v.put(CalendarContract.Calendars.ACCOUNT_NAME, account.name);       
        v.put(CalendarContract.Calendars.ACCOUNT_TYPE, account.type); 
        v.put(CalendarContract.Calendars.CALENDAR_COLOR, Color.GREEN); 
        v.put(CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL,Calendars.CAL_ACCESS_OWNER);         
        v.put(CalendarContract.Calendars.OWNER_ACCOUNT, account.name); 
        v.put(CalendarContract.Calendars._ID, 123);// u can give any id there and use same id any where u need to create event   
        v.put(Calendars.SYNC_EVENTS, 1); 
        v.put(Calendars.VISIBLE, 1); 
        Uri creationUri = asSyncAdapter(Calendars.CONTENT_URI, account.name, account.type); 
        Uri calendarData = mContext.getContentResolver().insert(creationUri, v); 
        long id = Long.parseLong(calendarData.getLastPathSegment()); 
       } 
    private Uri asSyncAdapter(Uri uri, String account, String accountType) 
        { 
        return uri.buildUpon().appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true").appendQueryParameter                  (Calendars.ACCOUNT_NAME,account) .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType) .build(); 
        } 
        ContentValues values = new ContentValues();
        String eventTitle = eventsubject[i]; 
        values.put(Events.DTSTART, startMillis); 
        values.put(Events.HAS_ALARM, 1); 
        values.put(Events.DTEND, endMillis); 
        values.put(Events.EVENT_COLOR, Color.BLUE); 
        values.put(Events.TITLE, eventTitle); 
        values.put(Events.DESCRIPTION, ""); 
        values.put(Events.CALENDAR_ID, calendarId1); 
        values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault() .getID()); 
        Uri uri = cr.insert(Events.CONTENT_URI, values); 
        long eventID = Long.parseLong(uri.getLastPathSegment()); 
        ContentValues reminders = new ContentValues(); 
        reminders.put(Reminders.EVENT_ID, eventID); 
        reminders.put(Reminders.METHOD, Reminders.METHOD_ALERT); 
        reminders.put(Reminders.MINUTES, 2); 
        Uri uri2 = cr.insert(Reminders.CONTENT_URI, reminders); 
        Log.e("Reminder", "addreminder" + uri2);  

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 将自定义日历与Android和iOS同步 - Sync custom calendar with Android & iOS 为什么每次添加/删除自定义类型的帐户时Android都会触发Google帐户同步? - Why does Android trigger a Google account sync every time I add/remove an account of a custom type? 将自定义事件同步到 android 中的默认手机日历 - sync custom events to default phone calendar in android Android - 同步联系人以编程方式添加到谷歌帐户 - Android - sync contact add programmatically to google account 如何在Android日历中为自定义帐户创建事件? - How to create a event in android calendar for custom account? 网络日历与Android日历同步 - Web calendar sync with android calendar 在Android中以编程方式添加日历事件不会同步到网络 - Programmatically add calendar event in Android doesn't sync to web Android帐户同步提供商 - Android Account Sync Provider 是否可以将另一个同步帐户添加到android中的现有联系人? - Is it possible to add another sync account to an existing contact in android? 当您检查设置>帐户> Google帐户>同步日历时,在Android设备上执行的操作到底是什么? - What exactly gets executed on Android device when you check Settings > Accounts > Google account > Sync Calendar?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM