2016-04-14 12 views

cevap

4

Evet, CALENDAR_ACCESS_LEVEL değerini kontrol etmeniz gerekiyor.

Aşağıdaki erişim seviyesi ile tüm takvim almalısınız:

CAL_ACCESS_OWNER

CAL_ACCESS_EDITOR
tam erişim takvimine tam erişim takvimi değiştirmek için değil, erişim denetimi ayarları

CAL_ACCESS_CONTRIBUTOR
tam erişim takvimi değiştirmek için, ama

Bu, tüm yazılabilir takvimleri döndüren bir örnek erişim kontrol ayarları

CAL_ACCESS_ROOT
Alan yönetici konumunda değil: meraktan

String selection = "(" + CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL + " = ? OR " 
     + CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL + " = ? OR " 
     + CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL + " = ? OR " 
     + CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL + " = ?)"; 

String[] selectionArgs = new String[]{ 
     Integer.toString(CalendarContract.Calendars.CAL_ACCESS_OWNER), 
     Integer.toString(CalendarContract.Calendars.CAL_ACCESS_EDITOR), 
     Integer.toString(CalendarContract.Calendars.CAL_ACCESS_CONTRIBUTOR), 
     Integer.toString(CalendarContract.Calendars.CAL_ACCESS_ROOT)}; 

Cursor cursor = getContentResolver().query(CalendarContract.Calendars.CONTENT_URI, null, selection, selectionArgs, null); 
+0

Bunu nasıl öğrendin? Dokümantasyon için oldukça yoğun bir şekilde aradım ama hiçbir şey bulamadım. –

+0

Ayrıca, her erişim seviyesinin ne anlama geldiğini daha ayrıntılı olarak açıklayabilir misiniz? İki aynı açıklamaya sahip. Görünüşe göre, siz de göstermediğiniz başka erişim seviyeleri de var. Tüm bunların ne anlama geldiğini bilmek yardımcı olabilir. Tek bildiğim, sarı kutu bölgenizde çoğalttığınız dizgiler. Onların ne anlama geldiği hakkında bir açıklama yok. –

+0

Tüm takvim erişim düzeyiyle ilgili belgelere [buradan ulaşabilirsiniz (http://developer.android.com/reference/android/provider/CalendarContract.CalendarColumns.html). Gördüğünüz gibi, takvimi değiştiremeyen 5 seviye daha var ("CAL_ACCESS_FREEBUSY", "CAL_ACCESS_NONE", "CAL_ACCESS_OVERRIDE", "CAL_ACCESS_READ", "CAL_ACCESS_RESPOND"). Sarı alandaki her erişim seviyesi de tıklanabilir ve açıklamanın yapıldığı yerdeki belgeleri açın. Ne yazık ki, tek seviyenin anlamı hakkında daha fazla ayrıntı yok. –

1

Birisi beni düzeltirse, doğru yanıt olarak aşağıdakileri dikkate alacağım.

Cursor calCursor = context.getContentResolver().query(
     Calendars.CONTENT_URI, 
     projection, // whatever cols you want 
     (Calendars.VISIBLE + " = 1 and " + 
     Calendars.CALENDAR_ACCESS_LEVEL + " >= " + Calendars.CAL_ACCESS_CONTRIBUTOR), 
     null, 
     Calendars._ID + " ASC"); 

Via ben tatil veya doğum günü takvimler içermeyen bir liste alıyorum. Yani, aldığım listedeki herhangi bir takvim yazılabilir olduğunu ve bu nedenle, benim app kolayca tatil ve doğum günleri sadece okuyabilir yapabilirsiniz varsayalım. Şimdiye kadar bu varsayım benim için çalışıyor.

İlgili konular