2014-07-21 14 views
5

Sadece Android Takvimleri ile nasıl çalışacağımı öğreniyorum. Şimdiye kadar, mevcut takvimlerle ilgili bilgileri görüntüleyebiliyorum. Ben de kendi yerel takvimler oluşturabilirsiniz - Test kodu gibi: AslındaAndroid Takvim Sağlayıcı: Kendi yerel takvimlerimi nasıl silebilirim?

private void createCalendarTest() 
{ 
    Uri.Builder builder = Calendars.CONTENT_URI.buildUpon(); 
    builder.appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER, "true") 
      .appendQueryParameter(Calendars.ACCOUNT_NAME, "private") 
      .appendQueryParameter(Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL); 

    Uri uri = builder.build(); 

    ContentValues values = new ContentValues(); 
    values.put(Calendars.NAME, "TEST"); 
    values.put(Calendars.CALENDAR_DISPLAY_NAME, "Calendar named TEST"); 
    values.put(Calendars.SYNC_EVENTS, false); 
    values.put(Calendars.VISIBLE, true); 

    getContentResolver().insert(uri, values); 
} 

, ben sadece _ID farklılık birçok takvimler oluşturabilirsiniz. Başka bir yerde, yalnızca senkronizasyon bağdaştırıcısını kullanırken bir takvim oluşturabildiğim okudum. Şimdi takvimi nasıl silebilirim? URI'nin ayrıca senkronizasyon adaptörü bilgilerini ve silinmiş takvimin _ID'unu içermesi gerektiğini umuyorum. Aşağıdaki kodu denedim ama başarısız oldu:

private void deleteCalendarTest() 
{ 
    Uri.Builder builder = Calendars.CONTENT_URI.buildUpon(); 
    builder.appendPath("6") // here for testing; I know the calender has this ID 
      .appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER, "true") 
      .appendQueryParameter(Calendars.ACCOUNT_NAME, "private") 
      .appendQueryParameter(Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL); 

    Uri uri = builder.build(); 

    getContentResolver().delete(uri, null, null); 
    Toast.makeText(this, "??? deleteCalendarTest() not working", Toast.LENGTH_SHORT).show(); 
} 

Nasıl düzeltebilirim?

+0

Sorunla ilgili herhangi bir düzeltme buldunuz mu? Bende aynı durumdayım! –

+0

Hayır, düzeltmedim. Projenin bu kısmı durduruldu ve çözümü aramaya devam etmedim. – pepr

+1

Bir çözüm buldum ve soruya cevap verdim ... belki bir başkasına yardım edecek! –

cevap

3

daha dikkat belgeleri okuduktan sonra sana içeriğe eklemek gerekir öğrendim çok aşağıdaki alanları değerleri:

values.put(CalendarContract.Calendars.SYNC_EVENTS, 1); 
values.put(CalendarContract.Calendars.ACCOUNT_NAME, "private"); 
values.put(CalendarContract.Calendars.ACCOUNT_TYPE,CalendarContract.ACCOUNT_TYPE_LOCAL); 

Sonra her şey iyi olmalı ve eklenen takvimi silmek gerekir ! ;)

+1

Çaba için teşekkürler. Şimdi kontrol edemiyorum; neyse ... – pepr

+0

Bir takvim oluşturmak için tüm bu parametreleri ekledim ancak uygulamadan programlı olarak oluşturduğum yerel takvimini silemiyorum –

+0

Takvim oluşturma için bahsettiğim alanları kullanırsanız ve ContentProvider'ın URI'sine eklediğinizde @pepr tarafından kullanılan sorgu parametreleri, sorun yaşamamalısınız. Belki de kodunda bir sorun var. Neyse, belgeler çok yardımcı olur: http://developer.android.com/guide/topics/providers/calendar-provider.html –

İlgili konular