2017-11-21 16 views
1

私はイベントを作成するアプリを手掛けています。 Androidのデフォルトカレンダーにカレンダーを作成しました。このカレンダーで予定を追加、削除、更新できました。しかし、作成したカレンダーが自動的に約10分間削除されることに気付きました。これはSプランナー(デフォルトのカレンダー)やGoogleカレンダーで問題になることはありますか?Androidカレンダーはカレンダーとイベントを10分後に削除します

Uri target = Uri.parse(CalendarContract.Calendars.CONTENT_URI.toString()); 
    target = target.buildUpon().appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true") 
      .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, accountName) 
      .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, Utils.APP_PACKAGE).build(); 


    ContentValues values = new ContentValues(); 
    values.put(CalendarContract.Calendars._ID, MY_CALENDAR_ID); 
    values.put(CalendarContract.Calendars.ACCOUNT_NAME, accountName); 
    values.put(CalendarContract.Calendars.ACCOUNT_TYPE, Utils.APP_PACKAGE); 
    values.put(CalendarContract.Calendars.NAME, "TBDAppName (" + accountName + ")"); 
    values.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, Utils.APP_PACKAGE); 
    values.put(CalendarContract.Calendars.CALENDAR_COLOR, 0x00FF00); 
    values.put(CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL, CalendarContract.Calendars.CAL_ACCESS_READ); 
    values.put(CalendarContract.Calendars.OWNER_ACCOUNT, accountName); 
    values.put(CalendarContract.Calendars.VISIBLE, 1); 
    values.put(CalendarContract.Calendars.SYNC_EVENTS, 1); 

    context.getContentResolver().insert(target, values); 

、これは私がイベントを挿入しています方法です::これは私が私のカレンダーを作ってるんだかである

long startMillis = 0; 
    long endMillis = 0; 
    Calendar beginTime = Calendar.getInstance(); 
    beginTime.set(2018, 01, 01, 7, 30); //random time to test inserting. 
    startMillis = beginTime.getTimeInMillis(); 
    ContentValues values = new ContentValues(); 
    values.put(Events.CALENDAR_ID, MY_CALENDAR_ID); 
    values.put(Events._ID, MY_EVENT_ID); 
    values.put(Events.TITLE, MY_EVENT_TITLE); 
    values.put(Events.DESCRIPTION, "test description"); 
    values.put(Events.DTSTART, startMillis); 
    values.put(Events.DTEND, startMillis); 
    values.put(Events.CALENDAR_ID, MY_CALENDAR_ID); 
    TimeZone timeZone = TimeZone.getDefault(); 
    values.put(Events.EVENT_TIMEZONE, timeZone.getID()); 
    context.getContentResolver().insert(Events.CONTENT_URI, values); 

答えて

0

あなたはカレンダーを作成するとき、あなたはACCOUNT_TYPE_LOCALとしてそれを設定する必要があり、そうでないもの削除されます。これは、http://developer.android.com/reference/android/provider/CalendarContract.htmlに次のように記述されています。任意のアカウントに関連付けられていない カレンダーの

特別勘定の種類ACCOUNT_TYPE_LOCAL

のpublic static final Stringです。通常、デバイスの アカウントと一致しないカレンダーは削除されます。 カレンダーのaccount_typeをこれに設定すると、既存のアカウント と一致しない場合にワイプされません。

関連する問題